Я пытаюсь удалить строки на основе значения в столбце. Я знаю несколько способов сделать это, но мне интересно, почему этот метод также удаляет строку заголовка. Нужно ли указывать другой диапазон?
Sub DeleteForeign()
Dim LastRow As Long
Dim Rng As Excel.Range
'
' Choose entire column
With ActiveSheet
LastRow = .Range("D" & .Rows.Count).End(xlUp).Row
' Changing the range from Cells(1, "D") to Cells(2, "D") keeps the header intact,
' but deletes the next row which should be left since it has the value, "US"
Set Rng = .Range(Cells(1, "D"), Cells(LastRow, "D"))
End With
' This construct avoids looping which would be time-consuming for long lists
' Looking for country code, "US", and to delete all others
With Rng
.AutoFilter Field:=1, Criteria1:="<>US", Operator:=xlFilterValues
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
End Sub