목록조합 (3)
rand(life)
순열 조합 매크로에 대해서는 지난번에 소개하였지만, 이번엔 약간 다른 경우이다. 출처는 여기이다. 보다시피, A그룹에서 하나, B그룹에서 하나, C그룹에서 하나, D그룹에서 하나씩만 꺼내와서 결과를 조합하는 것이다. 이것은 이전의 매크로를 가지고는 할 수 없는 작업이다. 아래와 같이 할수도 있을것이다. for i1 = 1 to 3 for i2 = 1 to 3 for i3 = 1 to 2 for i4 = 1 to2 Result = i1 & i2 & i3 & i4 next next next next 하지만 단점 두 개가 분명히 보인다. 일단 지금은 그룹이 4개이지만, 그룹이 100개가 된다면? 그리고, 각 그룹마다 요소의 갯수가 다르다. 다른 사람도 이런 고민을 했을텐데, 하면서 검색을 해보았는데, 바로 위..
Option Explicit Sub 순열조합_매크로() Dim 항목배열 As Variant, wf As WorksheetFunction Set wf = WorksheetFunction ' 엑셀 시트함수 Application.ScreenUpdating = False ' 기존자료 삭제 및 머릿글 Range("d1").CurrentRegion.Offset(1).Delete xlUp ' 항목 셀범위를 1차원 배열로 변경 하기 위한 작업 With Range("a2", Cells(Rows.Count, "a").End(xlUp)) 항목배열 = wf.Transpose(.Value) ' 가로세로 바꿈 If .Columns.Count > 1 Then ' 가로면 가로세로를 한번 더 바꿈 항목배열 = wf.Transpose(..
permutation : 순열 combination : 조합 에서 따온 이름들입니다. 수학시간에 다들 배우신 기억이 날 것입니다. 로또 1등 당첨확율은 얼마일까요? 답은 "1에서 45까지의 공이 있는데, 그 중에 6개의 공을 무작위로 꺼낼때 만들 수 있는 조합의 수"분의 1입니다. 실제로 계산하려면 45!/(45-6)!을 계산해야하므로, 매우 복잡할 것처럼 보입니다만, =COMBIN(45,6) 와 같이 간단하게 수식을 만들수 있으며, 답은 8,145,060 입니다. 로또 1등 당첨 확율이 8백만분의 1이 넘는다더니 정말이군요^^ 순열은 공을 꺼내는 것 뿐만 아니라 꺼낸 공을 배열하는 경우까지 따지므로, 그 값이 더 커지게 됩니다. =PERMUT(45,6) 의 결과값은 5,864,443,200 입니다. 5..