300개의 예

생일 정렬

Sort Birthdays

아래에서 프로그램을 살펴보겠습니다. 엑셀 VBA 저것 생일을 정렬 첫 번째는 월이고 두 번째는 일입니다(그래서 연도는 무시합니다). 우리는 첫 번째 위치에 가장 낮은 월 숫자를 가진 생일을 원합니다. 월 번호가 같은 생일이 있는 경우 요일 번호가 가장 낮은 생일을 먼저 원합니다. 준비 되었나요?



상황:

생일 정렬 예





참고: 날짜는 미국 형식입니다. 먼저 월, 일 두 번째. 이 유형의 형식은 Windows 국가별 설정에 따라 다릅니다.

1. 먼저 8개의 변수를 선언합니다. 하나의 Date 변수는 tempDate, 하나의 String 변수는 tempName이라고 합니다. 다른 6개의 변수는 이름이 monthToCheck, dayToCheck, monthNext, dayNext, i 및 j인 정수 변수입니다.



없음임시 날짜같이 날짜, 임시 이름같이
없음월 체크같이 정수, 날짜 확인같이 정수, 월다음같이 정수, 일다음같이 정수, NS같이 정수, 제이같이 정수

2. 두 개의 For Next 루프를 시작합니다.

Excel에서 전력을 계산하는 방법
을위한나는 = 2NS13
을위한j = 나는 + 1NS13

예: i = 2인 경우 j = 3, 4, ... , 12 및 13이 확인됩니다.

3. 4개의 정수 변수를 초기화합니다. Month 함수를 사용하여 날짜의 월을 가져오고 Day 함수를 사용하여 날짜의 날짜를 가져옵니다.

monthToCheck = 월(Cells(i, 2).Value)
dayToCheck = day(Cells(i, 2).Value)

monthNext = 월(Cells(j, 2).Value)
dayNext = day(Cells(j, 2).Value)

예를 들어: 시작 시 i = 2인 경우 Bregje 날짜, j = i + 1 = 2 + 1 = 3인 경우 Niels 날짜가 선택됩니다.

4. 날짜를 적절하게 정렬하기 위해 첫 번째 날짜(monthToCheck 및 dayToCheck)를 다음 날짜(monthNext 및 dayNext)와 비교합니다. 다음 날짜가 '낮은' 경우 날짜와 이름을 바꿉니다. 다음 If Then 문을 추가합니다.

만약에(monthNext또는(monthNext = monthToCheck그리고하루다음그 다음에

만약에

위의 내용이 사실이면 날짜와 이름을 바꿉니다.

Excel에서 조건부 서식을 사용하는 방법

예: i = 2 및 j = 3인 경우 Bregje 및 Niels의 날짜가 확인됩니다. MonthNext = 6, monthToCheck = 2. 위의 문장은 monthNext가 monthToCheck보다 높기 때문에 사실이 아닙니다. Excel VBA는 j를 1씩 증가시키고 i = 2 및 j = 4에 대한 코드 행을 반복합니다. Joost(j = 4)가 Bregje보다 더 높은 월 번호를 가짐을 쉽게 알 수 있으므로 다음 항목으로 이동합니다. j = 5 및 j = 6에 대해 동일한 결과를 얻습니다. j = 7에 도달하면 다음 변수가 있습니다. monthNext = 2 및 dayNext = 9. MonthToCheck = 2 및 dayToCheck = 12. 이제 위의 명령문이 참입니다. monthNext = monthToCheck이고 dayNext(9)가 dayToCheck(12)보다 낮기 때문입니다.

5. 우리 교환 날짜들. Excel VBA가 날짜를 적절하게 교환할 수 있도록 임시로 하나의 날짜를 tempDate에 저장합니다. If 문에 다음 코드 줄을 추가합니다.

'날짜를 바꾸다
tempDate = Cells(i, 2).값
셀(i, 2).값 = 셀(j, 2).값
셀(j, 2).값 = 임시 날짜

6. 우리는 이름도 똑같이 합니다. If 문에 다음 코드 줄을 추가합니다.

'이름 바꾸기
tempName = Cells(i, 1).값
셀(i, 1).값 = 셀(j, 1).값
셀(j, 1).값 = 임시 이름

7. 두 번째 For Next 루프를 닫습니다(If 문 외부).

다음제이

i = 2 및 j = 7의 경우 Excel VBA는 날짜와 이름을 바꿨습니다. 즉, 첫 번째 위치에 Richard가 있고 위치 7에 Bregje가 있습니다. 또한 다음 반복을 시작할 때(i = 2 및 j = 8의 경우) 새로운 monthToCheck 및 dayToCheck를 얻습니다. 이제 Richard와 Dineke를 비교할 것입니다(j = 8). Richard의 날짜가 '낮은' 날짜이기 때문에 해당 날짜와 이름을 바꿀 필요가 없다는 것을 쉽게 알 수 있습니다. 사실 Richard(i=2)를 Jan(j=9), Wendy(j=10), Jeroen(j=11), John(j=12), Debby(j)로 교체할 필요가 없습니다. = 13). Richard는 '최저' 날짜를 가지고 있기 때문입니다. 이 방법으로 Excel VBA는 (i = 2의 경우) 첫 번째 위치에서 '최저' 날짜를 얻습니다. 두 번째 위치에서 두 번째 '최저' 날짜를 가져오기 위해 Excel VBA는 i = 3에 대해 똑같은 단계를 반복합니다. 세 번째 위치에서 세 번째 '최저' 날짜를 얻기 위해 Excel VBA는 i = 4에 대해 똑같은 단계를 반복합니다. 등.

8. 첫 번째 For Next 루프를 닫습니다(If 문 외부).

Excel에서 작동하면
다음NS

9. 프로그램을 테스트하십시오.

결과:

Excel VBA에서 생일 정렬

8/8 완료! 날짜 및 시간에 대해 자세히 알아보기 >
다음 장으로 이동: 이벤트



^