Excel - Sample

[Excel] 휴일이면 이전/이후 근무일 찾기

EGTools 2023. 10. 10. 23:18
728x90

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), 휴일목록)

 

휴일이면이전or이후근무일찾기.xlsx
0.01MB

728x90