논리/엑셀 프로그래밍

근무명령 확인 (n명 월 m회, 특정 요일, 주말 중복 금지)

섬그늘 2008. 11. 19. 11:24

아래 표를 참고해 보세요. 표를 마우스로 긁어 엑셀시트에 주소대로 붙여 넣고 수식 역시 마우스로 긁어 해당 수식창에 붙여넣으시고 찬찬히 보시면 이해하기 보다 쉽습니다.

 

 

A

B

C

D

E

F

G

H

I

J

K

L

1

날짜

요일

휴무1

휴무2

 

 

확인

결과

번호

성명

개수

2

2008-11-01

C

 

6

 

4회 여부

0

1

A

2

3

2008-11-02

E

 

7

 

A 목요일

2

2

B

2

4

2008-11-03

G

H

1

 

B 화요일

1

3

C

2

5

2008-11-04

A

B

2

 

주말 2명

1

4

D

1

6

2008-11-05

K

L

3

 

5

E

2

7

2008-11-06

J

J

4

악~

6

F

1

8

2008-11-07

D

E

5

 

7

G

2

9

2008-11-08

B

J

6

 

8

H

2

10

2008-11-09

C

 

7

악~

9

I

1

11

2008-11-10

F

G

1

 

10

J

3

12

2008-11-11

H

I

2

 

11

K

2

13

2008-11-12

K

A

3

 

12

L

1

 

B2 =TEXT(E2+1,"aaa")        ; weekday를 문자로 전환 (한글엑셀이라면 월화수...식으로 찍힐 것임)
E2 =WEEKDAY(A2,2)          ; weekday 옵션 2, 월화수...순으로 123...)
F2 =IF(OR((SUMPRODUCT((E$1:E1>5)*(C$1:C1=C2))>0),(C2=D2)),"악~","") ; 주말 중복 or 일일 중복
H2 =SUMPRODUCT(N(L2:L13=4))                                                      ; 휴일 수가 4회인 사람의 수
L2 =COUNTIF(C$2:D$13,K2)                                                              ; 각 인원 별 휴일 수
H3 =SUMPRODUCT(((C2:C13=K2)+(D2:D13=K2))*(E2:E13<>4))              ; A가 목요일이 아닌 날짜 수
H4 =SUMPRODUCT(((C2:C13=K3)+(D2:D13=K3))*(E2:E13<>2))              ; B가 화요일이 아닌 날짜 수
H5 =SUMPRODUCT((E2:E13>5)*(ISTEXT(C2:C13)+ISTEXT(D2:D13)=2))  ; 주말에 두명 쉬는 날짜 수

 

색상이 있는 셀을 각각 잡아 밑으로 드래그 복사하면 표가 완성됩니다.