Skills/Excel VBA

조합(combination) 출력

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

엑셀실전VBA(편무학,가메출판사,2007,15,000원)를 사서 디비는 중. www.iexceller.com의 code예제가 도움 됨. 맨 땅에 헤딩하며 처음 만들어 본 코드가 이것인 바, 무쟈게 시행착오를 거침. 뭐, 하염없이 하노라면 익숙해질 날이 올...지도 모르는 일. (2007.09.04)

 

 

B

C

D

E

3

 

 

 

 

4

 

2

4

 

5

 

 

 

 

6

1

0

1

2

7

2

0

1

3

8

3

0

1

4

9

4

0

2

3

10

5

0

2

4

11

6

0

3

4

12

7

1

2

3

13

8

1

2

4

14

9

1

3

4

15

10

2

3

4

 

Sub test_combination()
Dim i, j, k, rw, temp, tunit, tcom, a(20) As Byte
tunit = 4: tcom = 2 : '이 두 변수(tunit는 최대값, tcom은 셀수)를 조정하면 조합크기를 조절할 수 있음.
For i = 0 To tcom: a(i) = i: Next i
j = tcom: rw = 1

 

tprint:
Cells(5 + rw, 2) = rw
For i = 0 To tcom: Cells(5 + rw, i + 3) = a(i): Next i
rw = rw + 1

 

texam:
For i = 0 To tcom
If a(i) <> tunit - tcom + i Then GoTo tup1
Next i: GoTo tend

 

tup1:
For i = tcom To 0 Step -1
If a(i) < tunit - tcom + i Then j = i: i = 0
Next i
temp = a(j) + 1

 

tup2:
For i = 0 To j - 1
If temp <= a(i) Then temp = a(i) + 1
Next i
Cells(4, 3) = j: Cells(4, 4) = temp
a(j) = temp
If j = tcom Then GoTo tprint
j = j + 1: temp = 1: GoTo tup2

 

tend:
MsgBox "정상적으로 종료되었습니다!"
End Sub