我找到並修改了下面的程式碼以刪除 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
更新:事實證明,打開過濾器(即使沒有應用)是問題所在。關閉過濾器可以讓程式碼如預期運作。