【エクセルマクロ】特定文字を含む行以外を削除:コピペで使えるコード

vba-特定文字含まない行削除-アイキャッチ エクセルマクロで効率化する

エクセルマクロで、特定文字を含む行以外を削除する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(“左ルー”, “ぶっかけ”)] を含む行以外を削除


 

 
この記事がお役に立ちますと幸いです。
 

「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
ExcelVBAでワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載