엑셀 VBA에서 생일을 정렬
(우리는 년 무시 그래서) 우리는 두 번째 첫째 달과 일에 생일을 정렬 엑셀 VBA에서 프로그램을보고 아래. 우리는 첫 번째 위치에서 가장 낮은 개월 수에 생일을합니다. 동일한 달에 번호와 생일이있는 경우, 우리는 먼저 가장 낮은 일 번호와 생일을합니다. 준비 되었나요? 상황 :
참고 : 날짜는 미국의 형식에 있습니다. 제 달, 일 초. 형식의이 유형은 당신의 창 지역 설정에 따라 달라집니다.
-
먼저, 우리는 팔 개 변수를 선언합니다. 우리가 tempDate를 호출 한 날짜 변수는 하나 개의 문자열 변수 우리는 tempName를 호출합니다. 다른 여섯 개 변수 이름 monthToCheck, dayToCheck, monthNext, dayNext, I 및 J와 정수 변수이다.
Dim tempDate As Date, tempName As String Dim monthToCheck As Integer, dayToCheck As Integer, monthNext As Integer, dayNext As Integer, i As Integer, j As Integer
-
우리는 다음 루프를 들어 두를 시작합니다.
For i = 2 To 13 For j = i + 1 To 13
예 : 나는 = 2가, J = 3, 4, …, 12, 13이 선택된다.
-
우리는 네 개의 정수 변수를 초기화합니다. 우리는 날짜의 일을 얻을 수있는 날짜와 일 함수의 달을 얻을 달 함수를 사용합니다.
monthToCheck = month(Cells(i, 2).Value) dayToCheck = day(Cells(i, 2).Value) monthNext = month(Cells(j, 2).Value) dayNext = day(Cells(j, 2).Value)
예를 들어 처음에, I = 2 대; Bregje 날짜, J = 1 + 1 = 2 + 1 = 3; 닐스의 날짜가 선택됩니다.
-
우리는 다음 날짜 (monthNext 및 dayNext)와 첫 데이트 (monthToCheck 및 dayToCheck)를 비교, 제대로 날짜를 정렬하려면. 다음 날짜가 ‘낮은’경우, 우리는 날짜와 이름을 교환합니다. 그런 다음 if 문에 다음을 추가합니다.
If (monthNext < monthToCheck) Or (monthNext = monthToCheck And dayNext < dayToCheck) Then End If
위의 진술이 사실이라면, 우리는 날짜와 이름을 교환합니다.
예를 들어 I = 2 및 j는 3 = 들어 Bregje 닐스 날짜를 체크한다. monthNext이 monthToCheck보다 높기 때문에 MonthNext = 6, monthToCheck = 2 위의 진술은 사실이 아니다. 우리가 다음 단계로 이동 그래서, 2, J = 4 쉽게 주스트 (J = 4) Bregje보다 높은 월 번호가 볼 수 = 1로 엑셀 VBA 증가 J와 코드 라인을 반복합니다. 우리는 일본에 대해 동일한 결과를 얻을 수 = 5 우리가 J = 7에 도착하면 j는, 우리는 다음과 같은 변수가 6 = monthNext를 = 2 및 dayNext = 9 MonthToCheck = 2 dayToCheck = 12. 이제 위의 진술은 사실이다 monthNext = monthToCheck 및 dayNext (9) 이후 dayToCheck (12)보다 낮다.
-
우리는스왑날짜. 우리는 일시적으로 엑셀 VBA 제대로 날짜를 교환 할 수 있도록하는 것이, tempDate 한 날짜를 저장합니다. If 문에 다음 코드 줄을 추가합니다.
'swap dates tempDate = Cells(i, 2).Value Cells(i, 2).Value = Cells(j, 2).Value Cells(j, 2).Value = tempDate
-
우리는 이름과 동일한 작업을 수행. If 문에 다음 코드 줄을 추가합니다.
'swap names tempName = Cells(i, 1).Value Cells(i, 1).Value = Cells(j, 1).Value Cells(j, 1).Value = tempName
-
우리는합니다 (if 문 밖에서) 다음 루프에 대한 두 번째를 닫습니다.
Next j
내가 2, J = 7 =를 들어, 엑셀 VBA는 날짜와 이름을 바 꾸었습니다. 그 말은 우리는 또한 (i가 2, J = 8 = 대한) 우리는 우리의 다음 반복의 시작에 새로운 monthToCheck 및 dayToCheck를 얻을 것을 의미 위치 (7)의 제 1 위치와 Bregje에서 리처드를 얻을. 우리는 지금 Dineke (J = 8)과 리차드를 비교합니다. 당신은 쉽게 리처드는 ‘낮은’날짜를 가지고 있기 때문에 그 날짜와 이름을 교체 할 필요가 없다는 것을 알 수있다. 사실, 월 (J = 9), 웬디 (J = 10), 제론 (J = 11), 존 (J = 12)과 데비 (J으로는 (i = 2) 리처드를 교체 할 필요가 없습니다 = 13). 리처드는 ‘가장 낮은’날짜가 있기 때문이다. 첫 번째 위치에있는 ‘가장 낮은’날짜는 (i = 2 용) 엑셀 VBA 얻을 것이다 이쪽으로. i가 제 3 위치에 제 ‘낮은’데이트를 3. = 대한 두 번째 위치에서 두 번째 ‘낮은’기간을 얻기 위해 엑셀 VBA는 동일한 단계를 반복 I = 4에 대해, 엑셀 VBA는 동일한 단계를 반복 등
닫기 8.합니다 (if 문 외부) 다음 루프의 첫 번째.
Next i
프로그램을 테스트 9..
결과 :