특정 시작일부터 현재일까지 해가 바뀌어도 계속 누적되는 주차를 수식과 사용자 정의함수로 구해 보겠습니다.
누적주차는 프로젝트를 관리할 때 프로젝트가 현재 몇주차인가를 구할 때 많이 사용됩니다.
사실 시작일로부터 현재일까지 경과된 일수를 7로 나누면 간단히 해결할 수 있는 문제이지만, 업무에 따라서 한 주의 시작요일이 달라 질 수 있으므로 이것을 고려하면 해결 방법이 약간 복잡합니다.
누적주차를 구하기 위해서는 아래 그림과 같이 시작일, 현재일, 주의 시작요일 값이 필요합니다.
실습용 엑셀파일 다운로드 : 해가바뀌어도계속누적되는프로젝트주차구하기.zip
1. 수식으로 구하기
=CEILING(((C4-B4+1)+IF((WEEKDAY(B4)-D4)<0,(WEEKDAY(B4)-D4)+7,(WEEKDAY(B4)-D4)))/7,1)
=> 73
(2021년 1월부터 시작해서 해를 넘겨서 2022년 5월 22일은 73주차에 해당)
2. 사용자 정의함수로 구하기(VBA이용)
엑셀에서 Alt+F11을 눌러서 VBA를 이용하여 다음 코드를 붙여 넣고 셀에서 다음과 같이 사용합니다.
=getProjectWeekNum(B4,C4,D4)
=> 73
Function getProjectWeekNum(projectStartDate As Date, currentDate As Date, firstDayOfWeek As Integer) As Integer '// 해가 바뀌어도 계속 누적되는 주차 구하기(https://xlworks.net) '// @2021.10.29 '// '// 함수 인수 : '// projectStartDate - 시작일 '// currentDate - 현재일 '// firstDayOfWeek : 주의 시작요일 (1-일요일,2-월요일,3-화요일,4-수요일.... 7-토요일) Dim weekOffset As Integer weekOffset = (Weekday(projectStartDate) - (firstDayOfWeek)) If weekOffset < 0 Then weekOffset = 7 + weekOffset End If getProjectWeekNum = Application.WorksheetFunction.Ceiling(((currentDate - projectStartDate + 1) + weekOffset) / 7, 1) End Function