EGTools 전용함수에 FindWorkDay 함수가 있는데,
이걸 순수한 Excel 함수로 구현하는 방법이 있어서 소개합니다.
이전 근무일
=MAX( INDEX( (날짜 ROW($A$1:$A$30)+1) * (NETWORKDAYS.INTL(날짜 - ROW($A$1:$A$30)+1, 날짜 - ROW($A$1:$A$30)+1, 1, 휴일목록)=1), ) )
이후 근무일
=MIN( INDEX( (날짜 + ROW($A$1:$A$30)-1+100000) * (NETWORKDAYS.INTL(날짜 + ROW($A$1:$A$30)-1, 날짜 + ROW($A$1:$A$30)-1, 1, 휴일목록)=1), ) )+100000
원리를 간단하게 설명하면, INDEX를 이용해서 날짜를 기준으로 전/후 30일의 배열과, 전/후 30일의 근무일 여부를 NETWORKDAYS.INTL함수를 이용한 배열을 만들어 최종 근무일 또는 최초 근무일을 찾습니다.
이전 근무일은 휴일이 0으로 곱해져 근무일이 양수이므로 MAX를 사용하고,
이후 근무일은 MIN을 사용해야 하나 항상 0이 최소값이 되므로 날짜를 100000을 빼서 음수로 만들어 휴일이 0이 되고 근무일이 음수로 남아 있도록 하여 최소값을 찾은 다음 다시 100000을 더해서 원래 날짜로 되돌리는 것입니다.
이상 뻘소리 였습니다.
더 간단하게 하는 함수가 있습니다.
이전 근무일
=WORKDAY(날짜, 0, 휴일목록)
이후 근무일
=WORKDAY( 날짜, IF(NETWORKDAYS.INTL(날짜, 날짜, 1, 휴일목록)=1,0,1), 휴일목록)
'Excel - Sample' 카테고리의 다른 글
[Office] 문서에 저장할 이미지 자동압축 해제하기 (0) | 2023.11.22 |
---|---|
[Excel] 연승, 연패 또는 연속된 값의 Count (0) | 2023.11.08 |
Excel2010 이하에서 Sheet() 함수 사용하기 (0) | 2023.09.18 |
구글 Form을 이용해서 구글 시트에 Data 모으기 (0) | 2023.09.02 |
Excel 함수별 사용 가능한 버전 + Google sheets 함수 목록 (0) | 2023.07.09 |