【VBA】オートフィルタを利用して、条件に一致した行のみを削除する

例えば以下の表の
 ・列「名前」の
 ・値「佐藤」の行のみ
を、

列「名前」が「佐藤」の行は3行ある


削除できます!

列「名前」が「佐藤」の行が削除された
PR

VBAコード

ここでは例として、
 ・シート「sample」のセル「B2」から続く一連の範囲の表の
 ・列「名前」の値が「佐藤」の行のみを
 ・削除
します。

実行前
Option Explicit

Sub sample()
    
    Dim targetRange As range
    
    'オートフィルタの設定と表の1列目「名前」を文字列「佐藤」で絞り込み
    Worksheets("sample").range("B2").AutoFilter field:=1, Criteria1:="佐藤"
    
    '絞り込んだ行(=表示させた行)のみを対象として取得
    With Worksheets("sample").range("B2").CurrentRegion
        Set targetRange = .Resize(.Rows.Count - 1).Offset(1, 0)
    End With
    
    '絞り込んだ行(=表示させた行)のみを削除
    targetRange.Delete Shift:=xlUp
    
    'オートフィルタを解除
    Worksheets("sample").range("B2").AutoFilter

End Sub

オートフィルタにより、条件に一致した行のみを絞り込みます(=表示させます)。

絞り込んだ行(=表示させた行)のみを削除します。

その後、オートフィルタを解除します。

結果として、条件に一致した行のみが削除され、一致しない行が残ります。

PR

実行結果

オートフィルタを利用して、条件に一致した行のみを削除できました。

実行結果
PR

参考

オートフィルタを利用して、条件に一致した行ではない行を削除する方法は、以下の記事をご確認ください。

タイトルとURLをコピーしました