xxxxを含まない行をすべて削除

xxxxを含まない行をすべて削除

列 F に「NHO_Global」が含まれていないすべての行を削除するために、以下のコードを見つけて変更しましたが、すべてが削除されます (ただし、ヘッダー行は残ります)。

何を間違えたのでしょうか。どうすれば修正できますか? 列 F に「NHO_Global」を含む行だけを残す必要があります (単純なフィルタリングでは目的に適わず、削除する必要があります)。

Sub KeepOnlyNHOGlobal()

    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long

    Set ws = ActiveWorkbook.Sheets("NHO_Global")

    lastRow = ws.Range("F" & ws.Rows.Count).End(xlUp).Row

    Set rng = ws.Range("F1:F" & lastRow)

    'Filter and delete all but the header row
    With rng
        .AutoFilter Field:=1, Criteria1:="<>NHO_GLOBAL"
        .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With

    'Turn off the filters
    ws.AutoFilterMode = False

End Sub

更新: フィルターがオンになっていること (何も適用されていないにもかかわらず) が問題であることが判明しました。フィルターをオフにすると、コードは期待どおりに実行されました。

答え1

良い知らせがあります。問題はコードではなくデータにあります。以前:

前に:

ここに画像の説明を入力してください

以降:

ここに画像の説明を入力してください

注記:

コラムを確認してください値は余分な文字によって破損されません。

関連情報