Удалить все строки, не содержащие xxxx

Удалить все строки, не содержащие xxxx

Я нашел и изменил приведенный ниже код, чтобы удалить все строки, которые не содержат «NHO_Global» в столбце F, но он удаляет все (хотя оставляет строку заголовка).

Что я сделал не так и как это исправить? Мне нужно оставить только те строки, которые содержат "NHO_Global" в столбце F (простая фильтрация для моих целей не подойдет - их нужно удалить).

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

У меня хорошие новости. Проблема в ваших данных, а не в коде. До:

До:

введите описание изображения здесь

и после:

введите описание изображения здесь

Примечание:

Убедитесь, что ваша колонкаФзначения не искажаются посторонними символами!

Связанный контент