エクセルマクロで、特定文字を含む行以外を削除するVBAコードをご紹介します。
このページのマクロコードは、コピペで使えます。
ぜひお試しください!
特定文字を含む行以外を削除
以下のExcelVBAを実行すると、InStr関数を使用して特定の値を含む行以外を削除します。
Sub 指定文字を含まない行削除()
Dim LastRow As Long
Dim i As Long
'最終行取得
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
With ActiveSheet
'最終行から先頭へループ
For i = LastRow To 2 Step -1
'特定文字が無ければ行削除
If InStr(Cells(i, 5), "せき止め派") = 0 Then
.Rows(i).Delete
End If
Next
End With
Application.ScreenUpdating = True
End Sub
マクロ実行後
E列で特定文字列を含む行以外を一括削除します。
下図の「削除前」は削除対象行が分かりやすいように、セルに色付けしています。
特定文字を含む行以外を削除(複数文字)
以下のExcelVBAを実行すると、複数の単語を含む行以外を削除します。
Sub 複数の特定文字を除く行削除()
Dim LastRow As Long
Dim i As Long
Dim j As Long
Dim Target As Variant
'最終行取得
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'対象文字
Target = Array("左ルー", "ぶっかけ")
Application.DisplayAlerts = False
With ActiveSheet
'最終行から先頭へループ
For i = LastRow To 2 Step -1
For j = 0 To UBound(Target)
'特定文字が無かったら行削除
If InStr(Cells(i, 5), Target(j)) = 0 Then
.Rows(i).Delete
End If
Next j
Next
End With
Application.DisplayAlerts = True
End Sub
マクロ実行後
E列で特定の文字がある行以外を削除します。
特定文字を含む行以外を削除(複数列・複数文字)
以下のExcelVBAを実行すると、複数列で特定文字を含まない行を削除します。
Sub 複数の列で指定の値を含む行以外削除()
Dim i As Long
Dim j As Long
Dim Q As Long
Dim Target_Char As Variant
Dim Target_Clm As Variant
Dim Buf1 As Variant
Dim Buf2 As Variant
'対象文字
Buf1 = Array("左ルー", "ぶっかけ")
Buf2 = Array("A", "B")
'最初のループでの対象文字と対象列
Target_Char = Buf1
Target_Clm = 5
Application.DisplayAlerts = False
For Q = 1 To 2
'最終行から先頭へループ
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
For j = 0 To UBound(Target_Char)
'特定文字が無かったら行削除
If InStr(ActiveSheet.Cells(i, Target_Clm), Target_Char(j)) = 0 Then
ActiveSheet.Rows(i).Delete
Exit For
End If
Next j
Next i
'次のループでの対象文字と対象列
Target_Char = Buf2
Target_Clm = 4
Next Q
Application.DisplayAlerts = True
End Sub
マクロ実行後
D列で [Buf2 = Array(“A”, “B”)] を含む行以外を削除
E列で [Buf1 = Array(“左ルー”, “ぶっかけ”)] を含む行以外を削除
この記事がお役に立ちますと幸いです。
ExcelVBA 変数を使用して行削除・列削除:使用例11選
...
「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
ExcelVBAでワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載
リンク