두 날짜 사이에서 특정 요일의 개수를 세는 법입니다.
먼저 Chronicle님의 배열수식입니다. - http://blog.naver.com/asaph16/220622364366
{=SUM(N(WEEKDAY(ROW(INDIRECT(A1&”:”&B1)),2)=2}
- 날짜의 일련번호를 구한 뒤
- WeekDay 함수로 특정 요일에 해당하는 숫자와 비교
- 결과값을 모두 더함
의 흐름을 가집니다. 이번 매크로도 위 흐름과 다르지 않습니다.
결국 VBA도 엑셀 안에서 움직이며 이것은 엑셀을 모르면 VBA를 다룰 때 한계가 있다는 것을 의미합니다.
날짜에 대한 개념은 위 Chronicle님 블로그에 자세히 나와있으니 여기서는 VBA만 풀어내겠습니다.
코드는 아래와 같으며 알고리즘은 위 1~3에 해당합니다.
Function GetDay(StartDate As Long, EndDate As Long, WhenIsIt As Integer) As Integer Dim i As Long Dim iSum As Integer '시작날짜부터 마지막날짜까지 순환하면서 '해당 날짜가 무슨 요일인지 판단합니다. For i = StartDate To EndDate If Weekday(i, 2) = WhenIsIt Then iSum = iSum + 1 Next i GetDay = iSum End Function | cs |
날짜사이특정요일구하기.xlsm
'VB(A) > 당근쨈 & Chronicle' 카테고리의 다른 글
[& Chronicle] 공급업체가 다를 경우 행삽입 하기 (0) | 2017.05.03 |
---|---|
[& Chronicle] 불규칙한 그룹의 문자열 구분 (0) | 2017.05.03 |
[& Chronicle] 숫자와 영문자가 혼용된 상태에서 영문자만 추출하기 (0) | 2017.05.02 |
[& Chronicle] 문자 거꾸로 출력하기 (0) | 2017.05.02 |
[& Chronicle] 중복값 제거 & 중복값의 개수 (0) | 2017.05.02 |