dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。
この度Excelの置換作業の中でも、リストに入力されたデータと
一致している列データを一括置換(削除)したく質問させていただきました。

画像を例に説明させていただきます。
B2セルより下記には様々な情報のデータが入力されており、
D2セルより下記に置換(削除したい)データリストが入力されております。

マクロの記録操作で
Columns("B:B").Select
Selection.Replace What:="もも", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
とひとつのデータに対し削除を行っていくこちらに
D2セルより下記のリストに一致したデータのみ削除の置換のVBAを
組み込みたいのですが、どの様なプログラムの構成になるのでしょうか?

何卒よろしくお願いいたします。

「Excel VBA リストに一致したデー」の質問画像

A 回答 (2件)

置換したいキーワードの部分を、順番に入れ替えて実行します。


D2セルから始まって最終行まで。
この時に増えていく"行"の部分をFor~Next でループさせて増やしていきます。
(For~Next 以外にも方法はあります)

で、マクロ記録にあった "もも" の部分をセルアドレスに置き換えます。

Selection.Replace What:="もも"
これは
Selection.Replace What:=Range("D2")
と同じ。
ここが
Selection.Replace What:=Range("D2")
Selection.Replace What:=Range("D3")
Selection.Replace What:=Range("D4")
と数字が増えていくようにする、と考えると、下記のようになります。


Sub Macro()
  Dim i As Integer
  For i = 2 To Cells(Rows.Count, 4).End(xlUp)
    Columns("B:B").Select
    Selection.Replace What:=Range("D" & i), Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
  Next

  'おまけ処理
  Selection.Replace What:="  ", Replacement:=" "
  Selection.Replace What:=" ", Replacement:=" "
End Sub

For~Next で i の値が増えていきます。

Cells(Rows.Count, 4).End(xlUp)
は、4列目の最終行を取得するためのものです。

おまけ処理は、キーワードが削除された後、
前後の区切り空白が繋がって2個になったものを1個に置換するものです。
不要であれば削除してください。
    • good
    • 0
この回答へのお礼

助かりました

zongaiさん、回答ありがとうございます。

何時間もかかっていた作業が一瞬で終わり感激しております。
この様な記述になるのですね。
おまけ処理の記述もありがとうございます。
早速色々と弄り活用させていただいております。

この度はありがとうございました。

お礼日時:2021/05/07 06:41

おまけ処理の2行目、


スペース1個→スペース1個
になってました。
必要であれば、1行目と同様に
スペース2個→スペース1個
になおしてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!