エクセルマクロで、別シートと同じ値を行削除するVBAコードをご紹介します。
このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。
別シートと同じ値を行削除
以下のマクロを実行すると、条件一致する行を削除します。
Sub 別シートに存在する文字列を削除()
Dim List_Sht As Worksheet
Dim Del_Sht As Worksheet
Dim LastRow As Long
Dim i As Long
Dim J As Long
Dim SearchWord() As Variant
Set List_Sht = Sheets("リスト")
Set Del_Sht = Sheets("削除対象")
'Del_Shtの最終行取得
LastRow = Del_Sht.Cells(Rows.Count, 1).End(xlUp).Row
'Del_Shtの値を配列格納
For i = 1 To LastRow
ReDim Preserve SearchWord(i)
SearchWord(i) = Del_Sht.Cells(i, 1)
Next i
'List_Shtの最終行取得
LastRow = List_Sht.Cells(Rows.Count, 1).End(xlUp).Row
Application.DisplayAlerts = False
'List_Shtをループして、Del_Shtと同じ値があったら行削除
For i = 1 To UBound(SearchWord)
'最終行からループ
For J = LastRow To 1 Step -1
If List_Sht.Cells(J, 1) = SearchWord(i) Then
'行削除
List_Sht.Rows(J).Delete
End If
Next J
Next i
Application.DisplayAlerts = True
End Sub
マクロ実行前
「リスト」から削除したい値を「削除対象」に入力しておきます。
マクロ実行後
「削除対象」に存在する値を「リスト」から削除します。
別シートと同じ値を行削除(複数条件)
以下のマクロを実行すると、複数の条件が一致する行を消します。
Sub 別シートと同じセル値を削除()
Dim List_Sht As Worksheet
Dim Del_Sht As Worksheet
Dim LastRow As Long
Dim i As Long
Dim J As Long
Dim SearchWord() As Variant
Set List_Sht = Sheets("リスト")
Set Del_Sht = Sheets("削除対象")
'Del_Shtの最終行取得
LastRow = Del_Sht.Cells(Rows.Count, 1).End(xlUp).Row
'Del_Shtの値を配列格納
For i = 1 To LastRow
ReDim Preserve SearchWord(i)
SearchWord(i) = Del_Sht.Cells(i, 1) & Del_Sht.Cells(i, 2)
Next i
'List_Shtの最終行取得
LastRow = List_Sht.Cells(Rows.Count, 1).End(xlUp).Row
Application.DisplayAlerts = False
'List_Shtをループして、Del_Shtと同じ値があったら行削除
For i = 1 To UBound(SearchWord)
'最終行からループ
For J = LastRow To 2 Step -1
If List_Sht.Cells(J, 1) & List_Sht.Cells(J, 2) = SearchWord(i) Then
'行削除
List_Sht.Rows(J).Delete
End If
Next J
Next i
Application.DisplayAlerts = True
End Sub
マクロ実行前
「リスト」から削除したい値を「削除対象」に入力しておきます。
マクロ実行後
「削除対象」のA列とB列が一致する値を「リスト」から削除します。
この記事がお役に立ちますと幸いです。
・【エクセルマクロ】重複データを自動処理する使用例まとめ
【エクセルマクロ】重複データを自動操作:超便利13選
...
「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
ExcelVBAでワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載
リンク