删除所有不包含 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

我有个好消息。问题出在你的数据上,而不是你的代码上。之前:

前:

在此处输入图片描述

之后:

在此处输入图片描述

笔记:

确保您的专栏F值不会被多余的字符破坏!

相关内容