【VBA】指定した文字列が設定されていない行を、削除する

VBAで
 ・指定した文字列が設定されていない行を削除
できます!

PR

VBAコード

ここでは例として
 ・シート「売上」にある表の各行を確認して
 ・列「担当者」に文字列「田中」が含まれていない場合は削除
します。

シート「売上」にある表
シート「売上」にある表
Option Explicit

Sub sample()
    
    '対象文字列が設定されているかどうかを確認する列
    Const TANTO_COLUMN As Long = 2
    '表の開始行
    Const START_ROW As Long = 3
    
    Dim ws As Worksheet
    Dim endRow As Long
    Dim row As Long
    Dim tantoName As String
    Dim notDeleteTantoName As String
    
    '対象シート
    Set ws = ThisWorkbook.Worksheets("売上")
    '削除対象でない文字列
    notDeleteTantoName = "田中"
    
    '最終行を取得する(下から上へ見ていく)
    endRow = ws.Cells(Rows.Count, TANTO_COLUMN).End(xlUp).row
    
    '行数分繰り返し ※下の行から上の行へ向かって繰り返す
    For row = endRow To START_ROW Step -1
        '表の行から担当者名を取得
        tantoName = ws.Cells(row, TANTO_COLUMN)
        '削除対象でない文字列の場合は行を削除
        If tantoName <> notDeleteTantoName Then
            ws.Rows(row).Delete
        End If
    Next
    
End Sub

以下を指定します(6、8行目)。
※状況に応じて任意の値を指定してください。

・対象文字列が設定されているかどうかを確認する列
  ※今回は列「担当者」のため、変数名を「TANTO_COLUMN」としています。
・表の開始行

以下を指定します(17、19行目)。
※状況に応じて任意の値を指定してください。

・対象シート
・削除対象でない文字列
  ※今回の確認したい文字列は「担当者」のため、変数名を「notDeleteTantoName」としています。

最終行を取得します(22行目)。
※今回は「下から上へ見ていく」ことで最終行を取得します。

行数分繰り返し処理をして、指定した文字列が設定されていない場合は行を削除します(25~32行目)。
※今回は「の行からの行へ向かって繰り返す」ようにします。
※行の削除により行番号が変わっていくため、「の行からの行へ向かって繰り返す」だと上手くいかないため。

PR

実行結果

指定した文字列が設定されていない行を、削除できました。
※列「担当者」に文字列「田中」が含まれていない場合は削除できました。

実行結果
実行結果
PR

参考

上記のVBAコードは、以下の記事を参考にして作成しました。

●最終行を取得する


●表の行数分、繰り返し処理をする【ループ】