【VBA】オートフィルタで抽出した行を削除する

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

列「名前」が「佐藤」の行は3行ある
列「名前」が「佐藤」の行は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

表の1番左上はセル「B2」であるため、「range(“B2“)」としています(8行目)。
range(“B2”).AutoFilterにより、『セル「B2」から続く一連の範囲を対象にフィルターとなります。

列「名前」は表の1行目であるため、「field:=1」としています(8行目)。

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

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

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

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

PR

実行結果

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

実行結果
実行結果
PR

参考

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

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