논리/엑셀 프로그래밍

시작 끝 날짜 지정, 토, 일, 공휴일을 제외한 평일 수 계산

섬그늘 2008. 11. 14. 13:09

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=1050202&eid=qybQHztXBErWn7gpHy0TwmWJLcRDrHI0

 

 

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

1

시작

평일

 

 

 

 

 

 

 

 

2008-03-01

삼일절

2

2008-03-01

2008-03-02

0

 

1

6

7

2

2

-1

2

0

 

2008-05-05

어린이날

3

2008-03-21

2008-03-27

5

 

6

5

4

2

0

0

2

0

 

2008-05-12

석가탄신일

4

2008-05-01

2008-05-13

7

 

12

4

2

2

0

1

4

2

 

2008-06-06

현충일

5

2008-09-12

2008-09-16

2

 

4

5

2

2

0

0

2

1

 

2008-08-15

광복절

6

2008-03-27

2008-12-31

193

 

279

4

3

2

0

39

80

7

 

2008-09-13

추석

7

 

 

 

 

 

 

 

 

 

 

 

 

 

2008-09-14

추석

8

 

 

 

 

 

 

 

 

 

 

 

 

 

2008-09-15

추석

9

 

 

 

 

 

 

 

 

 

 

 

 

 

2008-10-03

개천절

10

 

 

 

 

 

 

 

 

 

 

 

 

 

2008-12-25

기독탄신일

 

E2 =DATEDIF(A2,B2,"d")       ; 경과 일수 (전체일수 -1). 이렇게 뽑으면 별도 서식 지정하지 않아도 됨.
F2 =WEEKDAY(A2,2)            ; 시작일의 요일 (옵션 2이면 월=1, 일=7. 일요일이 가장 오른쪽에 있는 달력)
G2 =WEEKDAY(B2,2)           ; 끝일의 요일
H2 =2-N(F2=7)                    ; 첫 주의 토일 수
I2 =SIGN(G2-6)+1               ; 마지막 주의 토일 수
J2 =(B2-A2-7-(G2-F2))/7   ; 처음 마지막 주를 제외하고 통으로 7일이 있는 주의 수
K2 =H2+I2+J2*2                   ; 기간 중 토요일, 일요일의 수 합계
L2 =SUMPRODUCT((N$1:N$10>=A2)*(N$1:N$10<=B2)*(WEEKDAY(N$1:N$10,2)<6))
C2 =E2+1-K2-L2  ; 결과 (전체 일수 - 토일 수 - 토일 아닌 휴일 수)

 

C2:L2 잡아 아래로 드래그 복사하면 표가 완성됩니다. 한국휴일을 엑셀이 친절하게 인식해주질 않기 때문에 예시와 같이 N열에 기간에 맞는 공휴일 날짜를 나열해 두고(O:P열은 참고용, 없어도 됨) 토일과 중복 여부를 L열에서 검사합니다. 위 표를 마우스로 긁어 엑셀시트에 붙인 후 해당 위치로 이동, 수식 역시 마우스로 긁어 해당 주소 수식 창에 붙인 후 보시면 이해가 보다 쉽습니다. 위 수식을 모두 C2 한 셀에 밀어 넣을 수 있긴 합니다만 복잡해져서 실전적이지 않습니다.