VB(A)/당근쨈 & Chronicle

[& Chronicle] 두 날짜 사이에서 특정 요일의 개수 구하기

당근쨈 2017. 5. 2. 22:35

두 날짜 사이에서 특정 요일의 개수를 세는 법입니다.
먼저 Chronicle님의 배열수식입니다.  - http://blog.naver.com/asaph16/220622364366

{=SUM(N(WEEKDAY(ROW(INDIRECT(A1&”:”&B1)),2)=2}
  1. 날짜의 일련번호를 구한 뒤
  2. WeekDay 함수로 특정 요일에 해당하는 숫자와 비교
  3. 결과값을 모두 더함

의 흐름을 가집니다. 이번 매크로도 위 흐름과 다르지 않습니다.
결국 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