• ベストアンサー

VBA セルに入力された文字を組み合わせる方法

A列に入力された単語とB列に入力された単語を全て組み合わせ(逆や他の列どうしでも)、 組み合わせたものを隙間なく縦一列に並べたいのですが、 こういったことはVBAで組み立てることが出来るでしょうか。 まったくの初心者のため、質問の仕方も下手で申し訳ありません。 イメージ図を添付させて頂きます。 やりたいことが伝わればいいのですが・・・。

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

  • ベストアンサー
回答No.1

ふたつの範囲の組み合わせ表示を行う例です。 Option Explicit Sub Macro1() Dim r1 As Range, r2 As Range, r3 As Range, r4 As Range, rowno As Integer Set r1 = Range("B7:B9") Set r2 = Range("C7:C10") Set r3 = Range("E7:E11") Set r4 = Range("F7:F10") Call 組合せ表示(Range("I7"), r1, r2) rowno = 7 + r1.Count * r2.Count Call 組合せ表示(Range("I" & rowno), r2, r1) rowno = rowno + r1.Count * r2.Count Call 組合せ表示(Range("I" & rowno), r3, r4) rowno = rowno + r3.Count * r4.Count Call 組合せ表示(Range("I" & rowno), r4, r3) End Sub '第1引数:表示開始セル '第2引数:範囲1 '第3引数:範囲2 Sub 組合せ表示(startRng As Range, Rng1 As Range, Rng2 As Range) Dim c1 As Range, c2 As Range Dim ridx As Integer For Each c1 In Rng1 For Each c2 In Rng2 startRng.Offset(ridx, 0).Value = c1.Value & c2.Value ridx = ridx + 1 Next Next End Sub

jjnnkk
質問者

お礼

お礼が遅くなり大変申し訳ありません!!! 未だ内容も理解できていないのですが、一連を式にして頂き、 ありがとうございます!!!

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! VBAではないので 的外れだったら読み流してください。 関数でやってみました。 ↓の画像のC2セルに =IF(ROW(A1)>COUNTA($A$2:$A$10)*COUNTA($B$2:$B$10),"",INDEX($A$2:$A$10,INT(((ROW(A1)-1)+COUNTA($B$2:$B$10))/COUNTA($B$2:$B$10)))&INDEX($B$2:$B$10,IF(MOD(ROW(A1),COUNTA($B$2:$B$10))=0,COUNTA($B$2:$B$10),MOD(ROW(A1),COUNTA($B$2:$B$10))))) という数式を入れて、オートフィルでずぃ~~~!っと下へコピーすると 表のような感じになります。 尚、数式は10行目まで対応できるようにしています。 参考にならなかったら無視してくださいね。m(__)m

jjnnkk
質問者

お礼

早速試してみました。感動しました!!! そのまま使える式の記載ありがとうございます!! こちらもとっても参考になりました。 また、お礼が遅くなり大変申し訳ありません。

関連するQ&A