• ベストアンサー

VBA マトリクス 全パターン

VBAで以下のことを実現したいです。 以下のエクセルがあります。   A B C 1 a b c 2 d e f 3 g h i このマトリクスの全パターンを別のシートに表示したいです。 表示結果 abc abf abi aec aef aei ・  ・  ・ ghi VBAで以上のことを実現したいですが、ご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • camputer
  • ベストアンサー率64% (22/34)
回答No.1

今晩は。出来る限り分かりやすいコーディングをしてみました。 Sub マトリクス()   シート2の行 = 1   For 行1 = 1 To 3     For 行2 = 1 To 3       For 行3 = 1 To 3         Sheets(2).Cells(シート2の行, 1) = Sheets(1).Cells(行1, 1) & Sheets(1).Cells(行2, 2) & Sheets(1).Cells(行3, 3)         シート2の行 = シート2の行 + 1       Next     Next   Next End Sub ↑「行1,行2,行3」 はそれぞれSheets(1)(左から1番目にあるシート)の行番号で、           「シート2の行」はSheets(2)(左から2番目にあるシート)の行番号です。 「Sheets(2).Cells(シート2の行, 1)」 に 「Sheets(1).Cells(行1, 1)」の文字と 「Sheets(1).Cells(行2, 2)」の文字と 「Sheets(1).Cells(行3, 3)」の文字を組み合わせた物を記入させています。 あとその記入をする度に「シート2の行」に1を加えています。 VBAの勉強どうぞ頑張って^^b

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>マトリクスの全パターン とは何のこと。3文字の組み合わせというべきか。 -- こんな問題は、VBAの問題として質問しているが、組み合わせ・順列の問題で、ただエクセルのシートに、元データがあるというだけ。 自分でどういうロジックで組み合わせや並べたらよいか考えること。 プログラムを知らなくても、考えられる事項だ。 またVBAの勉強としては、実務には余り役立たない勉強とおもう。 例えば配列 D1(1)~D(9)のデータがあるとして、どうしたら良いか考えましたか。問題を丸投げでは無いか。 配列に入れるところまでは ーー Sub test01() Dim d(9) k = 1 For i = 1 To 3 For j = 1 To 3 d(k) = Cells(i, j) k = k + 1 Next j Next i '--確認 For i = 1 To 9 MsgBox d(i) Next i End Sub 基本的な考えは 1文字目固定+2文字目固定(B)+3文字目9種変化 その次にBの部分を9種(残りは8種)変j化 終わればAの部分を9種変化 結局繰り回しの3ネストで良いのでは。 同じ文字があればどうするか。 下記ではダメか考えること。 Sub test01() For i = 1 To 9 For j = 1 To 9 For k = 1 To 9 MsgBox d(i) & d(j) & d(k) Next k Next j Next i End Sub ーーー >別のシートに表示したいです 初心者はまずドイツシートの別列に出す練習をすること。 その後別シートに出すなら Workshees(”Sheet2").Cells(i,j)=XXXのようなことを勉強のこと。

shenyanhe
質問者

お礼

ご指摘ありがとうございます。いろいろ勉強します。