- 締切済み
エクセルで組み合わせ作成
お世話になっております。 エクセルについて悩んでおりますので、どなたかご教授下さいませ。 A~Fの値を持つ6つの項目があります。各項目は必ず選ばれるとは限らず、最小1項目、最大6項目選択される可能でがあります。 組み合わせ数は計算で求めることが出来るのですが、実際にA~Fが選択された形でのパターンをエクセルに表示させたいと考えております。 数式およびVBAなど実現方法はありませんでしょうか。 例としては、 1 2 3 4 5 6 A A A A A A B B ・ ・ A A A A ・ ・ ・ A A A A A A A B A A A A という形となります。 なにとぞよろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- age_momo
- ベストアンサー率52% (327/622)
『なし』も入れると7charactorですから全部で7^6-1=117648通りありますよ。 大丈夫ですか? VBAでの記入方法が出ていますのでSheetでの関数記入方法を書いておきます。(一例) A1に =MID(" ABCDEF",MOD(INT(ROW(A1)/7^(COLUMN(A1)-1)),7)+1,1) を記入(この記述をコピーペーストでいいです)してこれをF行までコピーペースト。 後は気が済むまでA1-F1をコピーペーストしてください。 私のExcelは65536までしかありませんので途中で尻切れトンボになってしまってますが。。。
- chanfi
- ベストアンサー率37% (10/27)
うーん、(Excel2000ですが)私の方では上手く動いてますねぇ^^; Cells(count, 1) = a(1) Cells(count, 2) = a(2) Cells(count, 3) = a(3) Cells(count, 4) = a(4) Cells(count, 5) = a(5) Cells(count, 6) = a(6) とかにしちゃうと abcdef がひたすら並んじゃいそうですが^^; 横にというと、一つのセルに、という事でしょうか? でしたら、 Cells(count, 1) = a(i) + a(j) + a(k) + a(l) + a(m) + a(n) とすれば1つのセルになりますね。 もし、Excel2007とExcel2000のCellsの行列が逆の場合でしたら、 Count と 1~6 の数字を入れ替えれば横に並ぶはずです。
- chanfi
- ベストアンサー率37% (10/27)
Cells(count, 1) = a(i) Cells(count, 2) = a(j) Cells(count, 3) = a(k) Cells(count, 4) = a(l) Cells(count, 5) = a(m) Cells(count, 6) = a(n) の間違いでした^^;
- chanfi
- ベストアンサー率37% (10/27)
手抜きですがw Dim a(6) As String a(0) = " " a(1) = "a" a(2) = "b" a(3) = "c" a(4) = "d" a(5) = "e" a(6) = "f" Dim i, j, k, l, m, n, count As Integer count = 0 For i = 0 To 6 For j = 0 To 6 For k = 0 To 6 For l = 0 To 6 For m = 0 To 6 For n = 0 To 6 count = count + 1 Cells(count, i + 1) = a(i) Cells(count, j + 1) = a(j) Cells(count, k + 1) = a(k) Cells(count, l + 1) = a(l) Cells(count, m + 1) = a(m) Cells(count, n + 1) = a(n) Next Next Next Next Next Next
- higekuman
- ベストアンサー率19% (195/979)
何通りになるのかは分かっていらっしゃいますか? Excel2007より前のExcelでは、行数が足りませんよ。
お礼
ご指摘ありがとうございます。 件数はもちろん把握しており、エクセルも2007を使用しておりますので、対応は可能かと考えております。 引き続きよろしくお願いいたします。
お礼
ご回答ありがとうございます。 こちらで試してみたのですが、abcdefがひたすら並んでしまいました。 あと、出来ればabcdefは横に並んで居ると助かるのですが。 ご無理ばかりで申し訳ありません。
補足
申し訳ありません!! 私の記述ミスでした。 きちんと表示されました。 大変助かりました。 ありがとうございます。