- ベストアンサー
VBA セルに入力された文字を組み合わせる方法
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ふたつの範囲の組み合わせ表示を行う例です。 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
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 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
お礼
早速試してみました。感動しました!!! そのまま使える式の記載ありがとうございます!! こちらもとっても参考になりました。 また、お礼が遅くなり大変申し訳ありません。
お礼
お礼が遅くなり大変申し訳ありません!!! 未だ内容も理解できていないのですが、一連を式にして頂き、 ありがとうございます!!!