- ベストアンサー
エクセルでの組み合わせ表を作りたのですが
エクセルに A列 山田さん 鈴木さん 佐藤さん 加藤さん 山本さん 佐々木さん 長野さん 平野さんがいます。 この中から3人を選びたいのですが、 全部の組み合わせをエクセルで表示することはできますか? 実際には20人ぐらいいるますが・・・ 使用しているエクセルは2010です。 また4人を選んだ場合の全組み合わせの時も教えてください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
遊びで作って見ました。 Excel2003ですが、2010でも大丈夫だと思います。 A1から右に「山田さん」「鈴木さん」… と、8名分の名前を入れて下のマクロを動かします。 すると、2行目以降に選ばれた人の列に「1」を入れた表を作成します。 メンバー数、選ぶ人数が変わる時はマクロ中の数字を変えてください Sub Sample() Dim nTotal As Long Dim nSelect As Long Dim nRow As Long Dim i As Long Dim j As Long nTotal = 8 'メンバー人数 nSelect = 3 '選ぶ人数 nRow = 2 For i = ((2 ^ nSelect) - 1) To (2 ^ nTotal) If fCountbit(i) = nSelect Then For j = 1 To nTotal If (i And 2 ^ (j - 1)) > 0 Then Cells(nRow, j) = 1 End If Next j nRow = nRow + 1 End If Next i End Sub Function fCountbit(nTarget As Long) As Long Dim nBits As Long nBits = nTarget nBits = (nBits And &H55555555) + (Int(nBits / 2) And &H55555555) nBits = (nBits And &H33333333) + (Int(nBits / (2 ^ 2)) And &H33333333) nBits = (nBits And &HF0F0F0F) + (Int(nBits / (2 ^ 4)) And &HF0F0F0F) nBits = (nBits And &HFF00FF) + (Int(nBits / (2 ^ 8)) And &HFF00FF) nBits = (nBits And &HFFFF) + (Int(nBits / (2 ^ 16)) And &HFFFF) fCountbit = nBits End Function
お礼
おかげさまでできました。 ありがとうございます