1. 구문
WEEKNUM(serial_number,[return_type])
ISOWEEKNUM(date)
- serial_number 또는 date : 날짜도 기본적으로는 1900/1/1부터의 일련번호이므로 serial_number나 date나 같은 의미인데 형식만 다를 뿐입니다.
- return_type : WeekNum 함수에만 있는데, ISO 표준은 월요일부터 한 주가 시작되는 것으로 고정되어 있기 때문입니다.
return_type으로 주의 시작 요일을 지정 시 아래와 같이 주의 시작 요일이 나열되므로 쉽게 선택할 수 있으며, 기본 값은 1인 일요일입니다.
2. ISO 8601에 의한 달력의 특징
일반적으로 1/1부터 한 해와 첫 주가 시작되고 일요일부터 한 주가 시작되지만,
ISO 8601 기준에 의한 달력은 한 주가 월요일부터 시작되고, 목요일이 포함된 첫 번째 주가 한 해의 첫 주입니다. 따라서, 반드시 1/1이 한 해의 첫 번째 주가 되는 것이 아닙니다.
다시 말해, 1/1이 목요일 이전이라면 그 주가 올 해의 첫 주가 되는데, 1/1이 금요일 이후라면 그 주는 전년도의 마지막 주로 처리됩니다.
VBA의 DataDiff 함수를 설명할 때 vbFirstFourDays 인수가 있었는데 그것이 생각납니다. 왜냐하면 목요일이 포함된 첫 주는 1주일이 최소 4일 이상이기 때문입니다.
https://lsw3210.tistory.com/entry/%EB%82%A0%EC%A7%9C%EA%B0%84%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EA%B3%84%EC%82%B04-VBA-DateDiff-%ED%95%A8%EC%88%98
2023년 1월과 2020년 1월을 기준으로 첫 번째 주가 언제인지를 살펴보면 아래와 같습니다.
(2023년 1월)
2023년 1월은 1/1이 일요일이고, 목요일은 1/5일입니다.
일반적인 달력에 의한 첫 주는 1/1이 속한 주가 되므로 그 주가 한 해의 첫 주인데,
ISO 기준에 의하면 한 주가 월요일부터 시작이기 때문에 아래와 같이 달력이 달라져서
1/1은 첫 번째 주의 마지막 날이 되고, 1/2부터 새로운 주가 시작됩니다. 또한 첫 번째 목요일이 있는 주가 그 해의 첫 번째 주이므로, 두 번째 주가 2023년의 첫 번째 주가 되고, 1/1은 2022년의 마지막 주가 됩니다.
(2020년 1월)
2020년 1/1은 수요일인데,
ISO 기준에 의하면 월요일부터 새로운 주가 시작이기 때문에 아래와 같은 달력이 됩니다.
따라서, ISO 기준에 의하더라도 첫 번째 목요일인 1/1이 있는 주가 2020년의 첫 번째 주가 됩니다.
3. 예제
가. WeekNum과 ISOWeekNum의 인수인 날짜를 텍스트 형식으로 지정 가능
구문 설명에서는 인수가 숫자 또는 날짜로 되어 있어 =WEEKNUM(DATE(2023,1,3))식으로 숫자 또는 날짜 형식만 가능할 것 같은데,
=WEEKNUM("2023/1/3") 또는 =ISOWEEKNUM("2023/1/3")과 같이 날짜를 텍스트 형식으로 입력해도 값이 문제없이 값이 구해집니다.
나. 2023년도 1월 WeekNum과 ISOWeekNum 값 비교
위에서 살펴본 바와 같이 WeekNum은 1/1부터 한 주가 시작되므로 1/1과 1/3 모두 첫 번째 주가 되는데,
ISOWeekNum은 월요일부터 한 주가 시작되고, 첫 번째 목요일이 그 해의 첫 번째 주이기 때문에 1/1은 전년도의 마지막 주인 52가 반환되고, 1/2이 첫 번째 주의 월요일이기 때문에 1/3은 1이 반환됩니다.
다. 2022년도 1월 WeekNum과 ISOWeekNum 값 비교
2022년 1월 달력을 살펴보면 1/1이 토요일이고, 1/3일은 월요일이기 때문에
1/1의 WeekNum은 1이고, 1/3의 WeekNum은 2가 됩니다.
그러나 ISO 기준에 의하면 1/3부터 한 주가 시작되므로 1/3의 ISOWeekNum은 1, 1/1은 작년도의 마지막 주인 52가 반환됩니다.
라. 2021년도 1월의 WeekNum과 ISOWeekNum 값 비교
2021년 1월은 1/1이 금요일, 1/3일이 일요일이기 때문에 WeekNum이 1/1은 1이고, 1/3은 2가 되며,
ISOWeekNum은 첫 번째 목요일이 포함된 주가 첫 번째 주기 때문에 1/4이 첫 번째 주가 되고, 1/1이나 1/3 모두 작년도 마지막 주가 되므로 53이 반환됩니다.
마. 2020년도 1월의 WeekNum과 ISOWeekNum 값 비교
2020년 1월 달력을 보면 1/1과 1/3이 모두 첫 번째 주에 있으며,
월요일부터 시작하는 ISO 기준에 의해도 1/1과 1/3이 첫 번째 주이기 때문에 두 함수 모두 1이 반환됩니다.
'Excel' 카테고리의 다른 글
SumProduct 함수 - 곱한 것의 합을 반환 (0) | 2023.04.20 |
---|---|
월말을 구해주는 EOMonth 함수 (2) | 2023.04.17 |
DateValue, TimeValue : 텍스트 형식의 날짜, 시간을 정수 또는 소수로 변환 (0) | 2023.04.13 |
영업일 기준 전후 날짜 구하기 - Workday, Workday.Intl 함수 (0) | 2023.04.12 |
몇 달 전후의 날짜 구하기 - Edate 함수 (0) | 2023.04.11 |