논리/엑셀 프로그래밍

경우의 수 (8*5, 12ab)

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

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

 

함수로는 아래와 같이 할 수 있습니다. 12ab와 21ab는 같은 것(중복)으로 간주했을 때, 8C2*5C2 = 28*10=280 가지 경우의 수가 나옵니다. 두 자리씩 나누어 자리올림을 하는 로직인데, 표를 마우스로 긁어 엑셀시트에 붙인 후 색상이 있는 셀 주소창에 수식을 마우스로 긁어 복사, 붙여 보세요.

 

 

A

B

C

D

E

F

G

H

I

J

K

L

M

1

1

a

 

 

8

 

5

 

 

 

 

 

 

2

2

b

 

1

1

2

1

2

 

1

2

a

b

3

3

c

 

2

1

2

1

3

 

1

2

a

c

4

4

d

 

3

1

2

1

4

 

1

2

a

d

5

5

e

 

4

1

2

1

5

 

1

2

a

e

6

6

 

 

5

1

2

2

3

 

1

2

b

c

7

7

 

 

6

1

2

2

4

 

1

2

b

d

8

8

 

 

7

1

2

2

5

 

1

2

b

e

9

 

 

 

8

1

2

3

4

 

1

2

c

d

10

 

 

 

9

1

2

3

5

 

1

2

c

e

11

 

 

 

10

1

2

4

5

 

1

2

d

e

12

 

 

 

11

1

3

1

2

 

1

3

a

b

13

 

 

 

12

1

3

1

3

 

1

3

a

c

 

E1, G1에 각 데이타 원본의 개체 수를, E2:H2에 초기값을 입력한 후,

 

D2 =ROW(A1) ; 일련번호 ; D3에 복사
E3 =IF(AND(G2=G$1-1,H2=G$1),IF(F2=E$1,IF(E2=E$1-1,"",1),0),0)+E2
F3 =IF(AND(G2=G$1-1,H2=G$1),IF(F2=E$1,IF(E2=E$1-1,"",E3),F2)+1,F2)
G3 =IF(H2=G$1,IF(G2=G$1-1,1,G2+1),G2)
H3 =IF(H2=G$1,IF(G2=G$1-1,2,G3+1),H2+1)

J2 =E2 ; K2에 복사, L2 =INDEX($B$1:$B$5,G2) ; M2에 복사. 결과 테이블임.

이제 J2:M2 잡아 J3:M3에, D3:M3 잡아 아래로 D열이 280이 될 때 까지 (또는 VALUE! 에러가 날 때 까지) 채워넣으면 표가 완성됩니다.