- ベストアンサー
組み合わせパターンを作りたいのですが、どのようにすれば効率的ですか?
こんにちは。 現在、以下のアンケートがあります。 選択肢(Aはよい、Bはふつう、Cは悪い) 問1 ××× A B C 問2 ××× A B C 問3 ××× A B C ・ ・ ・ 問11 ××× A B C ここで、問1~問11までの設問全体の組み合わせのパターンがどれだけどんなものがあるのか一気に出したいのですが、どのような方法がありますでしょうか?もし、ソフトがあればご紹介して頂ければ幸いです。 例えば、 パターン1としては、問1~問11までが全てAというパターン、 パターン2としては、問1~問11までが全てBというパターン、 パターン3としては、問1~問11までが全てCというパターン、 パターン4としては、問1~問10まではAで問11だけがBというパターン ・ ・ ・ など、3の11乗パターン存在すると思ってます。 こうしたパターンの一覧表を一気に作りたいのですが、どのようにすればよろしいでしょうか。 ご教示頂ければ幸いです。宜しくお願い申し上げます。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
下記のプログラムをVB6で作ってみました。(あまりきれいではないですけど)pen4-2.8G メモリ512MBで90秒ほどで修了しました。 エクセルのことはよくわかりませんがそんなに難しくはないと思います。 Private Sub Command1_Click() Dim str_out As String s_time = Now() str_out = "" For i1 = 1 To 3 For i2 = 1 To 3 For i3 = 1 To 3 For i4 = 1 To 3 For i5 = 1 To 3 For i6 = 1 To 3 For i7 = 1 To 3 For i8 = 1 To 3 For i9 = 1 To 3 For i10 = 1 To 3 For i11 = 1 To 3 str_out = i11 & i10 & i9 & i8 & i7 & i6 & i5 & i4 & i3 & i2 & i1 Debug.Print str_out str_out = "" Next i11 Next i10 Next i9 Next i8 Next i7 Next i6 Next i5 Next i4 Next i3 Next i2 Next i1 Debug.Print s_time Debug.Print Now End Sub
その他の回答 (5)
- pori_boy
- ベストアンサー率60% (18/30)
こんにちは エクセル+関数のみを使う方法の一例です #エクセルでは最大行数に65536 という制約があり そのために少し変なことしてるかもしれません。 0. B列からV列の列幅を3に,X列からZ列の列幅を15に (見易さのためです) 1. A列にオートフィルを使って0から59048まで入力 (A1からA59049までが埋まると思います) 2. B1からK1まで以下の関数を入力 B1: =MOD(INT(A1/power(3,9)),3) C1: =MOD(INT(A1/power(3,8)),3) D1: =MOD(INT(A1/power(3,7)),3) E1: =MOD(INT(A1/power(3,6)),3) F1: =MOD(INT(A1/power(3,5)),3) G1: =MOD(INT(A1/power(3,4)),3) H1: =MOD(INT(A1/power(3,3)),3) I1: =MOD(INT(A1/power(3,2)),3) J1: =MOD(INT(A1/power(3,1)),3) K1: =MOD(INT(A1/power(3,0)),3) 3. B1からK1までを59049行目までコピー 4. M1に以下の関数を入力 M1: =IF(B1=0,"A",IF(B1=1,"B","C")) 5. M1をM1からV59049まで全部にコピー 6 X1からZ1まで以下の関数を入力 X1: =CONCATENATE("A",M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1) Y1: =CONCATENATE("B",M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1) Z1: =CONCATENATE("C",M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1) 7. X1からZ1までを59049行目までコピー とすると、X1からZ59049のセルに一覧がでます。 ---- VBAがわかるのであればそちらがおすすめですが このために覚える必要もないですね。
- Mathematica
- ベストアンサー率22% (50/225)
私はVer.2から使用していますが、確かにMathematicaは高価ですね。3^11は177147になりますから、これをエクセルで作ることは、出来ないことはないですが、一覧性は困難でしょうね。 マクロを作り、Pen4,3G メモリ2Gならなんとかなるかも知れません。
- Mathematica
- ベストアンサー率22% (50/225)
アンケートにおける分析方法について(ちょっと難しいかもしれませんが。。。)の質問に対しても書きましたが、Mathematicaを使用してください。3^11程度は簡単に作れます。
作ることは可能かと思いますが、作ることに意義があるかは疑問です。 参照するのが大変で 答えのパターンは3^11で間違いありません。 何で作るのかにもよってきますがエクセルでしたらVBAをつかってループを11個作って書き出すというのが一番簡単かな? 連番を3進数に変換させたりするのも考え方としては簡単だとおもいます。 コンピューターのほうで質問されれば、どなたかが作ってくださるかもしれません。 その際には、何を使って(ソフトウエア)作るのかも書いていただけたらよいかと思います。
お礼
ありがとうございます。 参考になります。 もう少し待ってみて、別の方法がない場合は、コンピュータの方に相談したいと思います。 本当にありがとうございます。
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
「作り方」としては、最終的に AAAAAAAAAAA AAAAAAAAAAB AAAAAAAAAAC ... と並べるとして、 A B C を3つコピーします。 それぞれの前に、A,B,C をつけます。 A B C A B C A B C に対して、 AA AB AC BA BB BC CA CB CC これを3つコピーして、それぞれの前に、A,B,C をつけます……と繰り返せばできます。 ただし、 3^11 って、 177,147 なんですが。 実用上「作れない」でしょう。
お礼
Mathematicaは、40万と想定外に高額であったため、この作業だけで買うのはちょっと悩みました。なので、別の方法がないか検討させて頂きました。 やはり、Mathematicaが一番なのですかねぇ・・・ もし、エクセルなどを使ってよい方法がありましたらご教示頂ければ幸いです。 宜しくお願いします。