• ベストアンサー

VBAでやりたいのですが

例えば,セルのA1から下に色々な言葉 犬 猫 ねずみ . . と,不特定数の言葉が入力されていて セルB1から下に同じように バナナ もも ブドウ . . . とやはり不特定数の言葉を入力して,この言葉をすべて自動的に組み合わせてくれて,しかも 犬 は バナナ が好きだと思いますか? のように間に「は」や「が好きだと...」を結合した形で別なシートに組み合わせの結果を表示させたいのですが,どのようなマクロをかけばいいのでしょうか。うまくやりたいことも説明できてないかもしれません。すみませんが教えてください。

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

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

No4です。 補足をみました。これでいいと思います。 Sheet1にあるデータを組み合わせ、sheet2のC8セル以下に表示します。 Sub test2() With Worksheets("Sheet1") x = .Cells(.Rows.Count, 3).End(xlUp).Row y = .Cells(.Rows.Count, 6).End(xlUp).Row z = 7 For n = 10 To x For i = 10 To y z = z + 1 Worksheets("Sheet2").Range("C" & z) = .Cells(n, 3).Value & "は" & .Cells(i, 6).Value & "が好きだと思いますか?" Next i Next n For i = 10 To y For n = 10 To x z = z + 1 Worksheets("Sheet2").Range("C" & z) = .Cells(i, 6).Value & "は" & .Cells(n, 3).Value & "が好きだと思いますか?" Next n Next i End With End Sub

bajiru
質問者

お礼

再度ありがとうございました!早速活用させてもらってます。

すると、全ての回答が全文表示されます。

その他の回答 (5)

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

Sheet6に組み合わせ要素があり、Sheet7に組み合わせを出す。 Sub test03() k = 1 For i = 1 To 4 For j = 1 To 4 Worksheets("sheet7").Cells(k, "A") = _ Cells(i, "A") & "は" & Cells(j, "B") & "が好きですか" k = k + 1 Next j Next i End Sub

bajiru
質問者

お礼

ありがとうございました。参考にさせていただきます!

すると、全ての回答が全文表示されます。
回答No.4

とりあえず全ての組み合わせをC列に表示してみました。こういうことでしょうか? Sub test() x = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row y = Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row For n = 1 To x For i = 1 To y z = z + 1 Cells(z, 3).Value = Cells(n, 1).Value & "は" & Cells(i, 2).Value & "が好きだと思いますか?" Next i Next n For i = 1 To y For n = 1 To x z = z + 1 Cells(z, 3).Value = Cells(i, 2).Value & "は" & Cells(n, 1).Value & "が好きだと思いますか?" Next n Next i End Sub

bajiru
質問者

補足

このようなことです!ご理解して頂きましてとても嬉しいです。 ちなみに,もっと具体的にセルC10から下に始まる単語と,セルF10から下に始まる単語の組み合わせの結果を別シートのセルC8から下に表示するにはどうすればよいですか?

すると、全ての回答が全文表示されます。
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

こういうのって、重複をどうするかで難易度が変わります。 重複しても良いなら。 Sheet1のA列とB列にキーワードがあるとして、Sheet2に書き込みです。 Sub Test() Dim i As Integer, j As Integer Dim cnt As Long, s As String Randomize For cnt = 1 To 100  With Worksheets("Sheet1")   i = Int(Rnd * .Range("A65536").End(xlUp).Row) + 1   j = Int(Rnd * .Range("A65536").End(xlUp).Row) + 1   s = .Range("A" & i).Value & "は" & _     .Range("B" & j).Value & "が好きだと思う?"   Worksheets("Sheet2").Range("A" & cnt) = s  End With Next cnt End Sub

bajiru
質問者

補足

すみませんでした。やはり説明が悪くて。ランダムに選ぶような難しいものではなく,総当たりの組み合わせの表示をできればいいなぁと思ったものです。

すると、全ての回答が全文表示されます。
  • SHJYOR
  • ベストアンサー率35% (7/20)
回答No.2

やられたいことが今ひとつはっきりわからないのですが... A列に   犬   猫   ねずみ B列に   バナナ   もも   ブドウ と入っていたとして、別シートのA列に   犬 は バナナ が好きだと思いますか?   犬 は もも が好きだと思いますか?   犬 は ブドウ が好きだと思いますか?   猫 は バナナ が好きだと思いますか?   猫 は もも が好きだと思いますか?   猫 は ブドウ が好きだと思いますか?   ねずみ は バナナ が好きだと思いますか?   ねずみ は もも が好きだと思いますか?   ねずみ は ブドウ が好きだと思いますか? と全ての組み合わせで出力されればいいのでしょうか? それでしたら、以下のような感じになるのでは? Sub test() Dim i As Integer Dim j As Integer Dim p As Integer Dim src As Worksheet Dim dst As Worksheet  Set src = Worksheets("Sheet1")  Set dst = Worksheets("Sheet2")  p = 1  For i = 1 To 999   If src.Range("A" & i).Value = "" Then Exit For   For j = 1 To 999    If src.Range("B" & j).Value = "" Then Exit For    dst.Range("A" & p).Value = src.Range("A" & i).Value & " は " & src.Range("B" & j).Value & " が好きだと思いますか?"    p = p + 1   Next j  Next i End Sub

bajiru
質問者

お礼

ありがとうございました。すばやい返答でとても嬉しかったです。参考にさせていただきます!

bajiru
質問者

補足

早速ありがとうございます!アンケート調査票を作りたいのですが,しょっちゅう組み合わせる為の言葉や数が変わるので,このようなことできないかなぁと思いまして。SHJYORさんのご回答のようなものをまさしく期待してました。 具体的なこと追加してしまいますが,セルC10から下に始まるものと,セルF10から下に始まるものの組み合わせを,別なシートのセルC8から下に表示させるような内容のもの教えて頂けますか?

すると、全ての回答が全文表示されます。
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

通常は乱数を発生させて、任意のセルを選択するようにプログラムします。

参考URL:
http://www2.cty-net.ne.jp/~hidenori/vba/vba22/
bajiru
質問者

補足

すみません。やはり説明が悪かったです。 やりたいことはアンケート調査の項目作りなんですが,乱数のような任意のセルの組み合わせではなく,A列,B列それぞれ何個記入されるかわからない言葉を全て順番に組み合わせて別のシートへ出力するようなものを考えてるのですが...。 よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A