• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAで毎回新しく入力したキーワードに指定のキーワードを置換できますか?)

Excel VBAでキーワードを置換する方法

このQ&Aのポイント
  • Excel VBAを使用して、毎回新しく入力したキーワードに指定のキーワードを置換する方法について教えてください。
  • 置換するキーワードは、別のシートにあるセルB3で指定されています。
  • 置換された結果は、別のシートのシートCに出力したいと考えています。なぜコードが作動しないのか、教えてください。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

#1です。 スピードは重視してませんが、 Sub try() Dim mystr As String Dim i As Long, j As Long Dim v If Worksheets("シートC").Range("A3").Value <> "" Then Exit Sub With Worksheets("シートB") v = .Range(.Range("A3"), .Cells(Rows.Count, "H").End(xlUp)) End With For i = 1 To UBound(v, 1) For j = 1 To 8 v(i, j) = Replace(v(i, j), "○○", Worksheets("シートA").Range("A3").Value) Worksheets("シートC").Range("A3").Offset(i - 1, j - 1).Value = v(i, j) Next Next Erase v End Sub こうゆう事なのでは?って感じがしましたけど。

noname#181401
質問者

お礼

n-jun様 ありがとうございます! 助かりました! シートBのデータをシートCに出力する際、ランダムに5つだけ出力とかってできますか? シートBのデータはただひたすら増えていくんですよ…。 なのでそんなこともできるのであれば教えて頂ければ幸いです。 よろしくお願いします。

その他の回答 (4)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

#4です。 乱数の重複チェックなし版なら、 Sub try_next() Dim i As Long, j As Long Dim cnt As Integer Dim r As Range If Worksheets("シートC").Range("A3").Value <> "" Then Exit Sub cnt = 0 Do i = Int(Rnd * (Worksheets("シートB").Cells(Rows.Count, 1).End(xlUp).Row)) + 1 Set r = Worksheets("シートB").Range("A" & i).Resize(1, 8) If Application.CountIf(r, "○○") > 0 Then For j = 1 To 8 Worksheets("シートC").Range("A3").Offset(cnt, j - 1).Value = _ Replace(r.Item(j).Value, "○○", Worksheets("シートA").Range("A3").Value) Next cnt = cnt + 1 End If Loop Until cnt = 5 Set r = Nothing End Sub こんな感じでしょうか。 重複チェックあり版は困惑です。

noname#181401
質問者

お礼

n-jun様 うわわわわっ! ご丁寧にありがとうございす! 助かりました!!

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

#2です。 >シートBのデータをシートCに出力する際、ランダムに5つだけ出力とかってできますか? ランダムとは乱数によるもの? それとも任意に選択すること? 任意に選択するのなら、どのように条件を与えたいのか。

noname#181401
質問者

お礼

n-jun様 乱数というのでしょうか。 勉強不足ですみませんが、無作為に出力する方法が希望です。 度々すみません。 よろしくお願いします。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#2です。 >Dim mystr As String いらなかったです。 ごめんなさい。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Selection.Replace what:="○○", Replacement:=Worksheets("シートA").Range("B3") ここで”どこをSelectしているのか”確認してみましたか? Replace関数  http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/function/vba_string.html#replace ご参考まで。

noname#181401
質問者

お礼

n-jun様 引数が間違っているんですね。 この関数の意味をよく分からずに作っていました…。 ありがとうございます。 他にも間違いがあったら教えて頂けないでしょうか?

関連するQ&A