質問: excelでの全通りの組み合わせ出力方法2 こんにちは。 http://oshiete.goo.ne.jp/qa/4122783.html にあった質問より、もう少し複雑な組み合わせを出力したいと思っています。 例えば 【肉類】として 牛肉 豚肉 鶏肉 魚肉 の中から2つ選び 【根菜】として 大根 にんじん たまねぎ サツマイモ の中から2つ選び 【葉野菜】として キャベツ 白菜 キャベツ レタス ほうれん草 の中から2つ選ぶ、 といった場合の全ての組み合わせを 【肉類】【根菜】【葉野菜】の列、または 【肉類1】【肉類2】【根菜1】【根菜2】【葉野菜1】【葉野菜2】の列に出力する事は出来るものでしょうか? 組み合わせ例としては、 牛肉、魚肉、大根、たまねぎ、レタス、ほうれん草 のような感じです。 実際に使用したい選択肢の総数が100個ほどあり、手入力には多すぎるので なんとかexcelで出来たらと思ってるのですが......。 ご存知の方がいらっしゃいましたらご教授下さい!
回答: 組み合わせ(順番は関係ない)という前提で 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セル フィルハンドルダブルクリック 考え方を理解するようにしてください