プロが教えるわが家の防犯対策術!

こんにちは。
http://oshiete.goo.ne.jp/qa/4122783.html
にあった質問より、もう少し複雑な組み合わせを出力したいと思っています。

例えば
【肉類】として
牛肉 豚肉 鶏肉 魚肉  の中から2つ選び
【根菜】として
大根 にんじん たまねぎ サツマイモ の中から2つ選び
【葉野菜】として
キャベツ 白菜 キャベツ レタス ほうれん草 の中から2つ選ぶ、

といった場合の全ての組み合わせを

【肉類】【根菜】【葉野菜】の列、または
【肉類1】【肉類2】【根菜1】【根菜2】【葉野菜1】【葉野菜2】の列に出力する事は出来るものでしょうか?

組み合わせ例としては、

牛肉、魚肉、大根、たまねぎ、レタス、ほうれん草

のような感じです。
実際に使用したい選択肢の総数が100個ほどあり、手入力には多すぎるので
なんとかExcelで出来たらと思ってるのですが……。

 ご存知の方がいらっしゃいましたらご教授下さい!

A 回答 (3件)

組み合わせ(順番は関係ない)という前提で


A1セルに総数 =PRODUCT(B1:D1)
B1セルに「肉」の組み合わせ数 =COMBIN(4,2)
C1セルに「根菜」の組み合わせ数 =COMBIN(4,2)
D1セルに「葉」の組み合わせ数 =COMBIN(5,2)

A2セルに連番として 1
B2セルに=IF($A2>$A$1,"",MOD(INT(($A2-1)/C$1/D$1),B$1)+1)
C2セルに=IF($A2>$A$1,"",MOD(INT(($A2-1)/$D$1),C$1)+1)
D2セルに=IF($A2>$A$1,"",MOD($A2-1,D$1)+1)
(D2セルから考えた)
A2:D2下へオートフィル連番360まで


各組合せ
I1セルに肉の品数の4
K5セルに根菜の品数の4
M5セルに葉の品数の5
I2に1、J2に2 右へコピー

I3セルに =(COUNTIF(I$2:I2,I2)>=I$1-I2)+I2
J3セルに =IF(I3<>I2,I3+1,J2+1)
I3:J3セルを右へ下へオートフィル
(添付図の罫線で囲まれた部分しか使わない)

E2セルに肉
=INDEX(P:P,INDEX(I:I,B2+1)+1)&" "&INDEX(P:P,INDEX(J:J,B2+1)+1)
F2セルに根菜
=INDEX(Q:Q,INDEX(K:K,C2+1)+1)&" "&INDEX(Q:Q,INDEX(L:L,C2+1)+1)
G2セルに葉
=INDEX(R:R,INDEX(M:M,D2+1)+1)&" "&INDEX(R:R,INDEX(N:N,D2+1)+1)
E2:G2セル フィルハンドルダブルクリック

考え方を理解するようにしてください
「Excelでの全通りの組み合わせ出力方法」の回答画像3
    • good
    • 0
この回答へのお礼

画像付きのとても丁寧なご回答、ありがとうございます!
COMBIN関数で、それぞれ値を出した後の手順がよく分からなかったので、とても参考になりました。
ご回答サンプルを参考に、実際出したかったデータを出すことが出来ました!本当にありがとうございます!

お礼日時:2011/11/02 21:54

ご覧になった過去ログに2通りの方法が書かれていましたが,どちらでも構わないのでほとんどそのまま利用して,肉4種の中から肉肉の組合せ計12通りを計算することは簡単にできますね。



同じ事を今度は根菜4種の中から,根菜1根菜2の組合せ12通りを計算することも簡単にできます。
この2つをまた同じ方法で掛け合わせれば,肉肉12通り×根菜根菜12通りの組合せが出てきます。

同様にして野菜5種の中からも20通りの組合せを計算して並べ,最後に肉肉根根144×葉葉20=2880通りもまた同じ事の繰り返しで並べることができます。
    • good
    • 1
この回答へのお礼

ご回答有難うございました!
可能との事で安心しました。コピーペーストのくり返しで出来そうだと思うのですが、今回出したい組み合わせ総数が3万程度になるものですから、途中にヒューマンエラーを起こした場合、うっかり見過ごすかも知れないので、そこだけ気をつけたらよさそうですね。
どうも有難うございました!

お礼日時:2011/11/02 21:49

知っていると思うが、組み合わせというのは、区分の場合の数が増えると急激に増える。


質問者はエクセル関数の初歩的な数十個しか出来ないと思うのだが、それでは出来ない。
プログラムを学んで、プログラムで3重,4重(ネストという)の繰り返しの処理で組み合わせれば、理論上は可能。
しかし場合の数が増えると、処理する時間・シートに書き出すコンピュータの時間も相当なものになり、待機我慢限度を超えた時間がかかるという感じをもつ場合もある。
ーー
そもそも理論的に1000件を超えるような組み合わせをシート上に出しても、使いこなせるのか?
もっと色々な数学的なことやコンピュター処理を勉強してから、考えて質問すべきと思う。
    • good
    • 0
この回答へのお礼

早々のご忠告ありがとうございました。
ご拝察のとおり、関数の一部しかまだ分からない初心者です。
私の判る範囲で出来る方法をご案内くださった3さまのお力添えで3万ほどの一覧を出すことが出来ました。
ご心配いただきありがとうございます。

OKWaveさんは、VBAプログラマー程度の知識がある方でないと質問すべきではない場所、とのご指摘ありがとうございます。
今後は、過去ログの知識レベルを参考にしてから質問させていただきますね。

お礼日時:2011/11/02 22:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!