Если я правильно понимаю ваш вопрос, вы просто хотите удалить все строки в листе, при условии, что определенный критерий в столбце D соответствует? Следующий код сделает это, но, пожалуйста, обязательно сделайте резервную копию файла, прежде чем пытаться это сделать!
Sub deleteRowsBasedOnCriteria()
Dim i As Long, lastRow As Long
Dim sht As Worksheet
Application.ScreenUpdating = False
Set sht = ThisWorkbook.Sheets("test") ' change sheet name to correct one in production
With sht
lastRow = .Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row
For i = lastRow To 2 Step -1 ' presuming there are headers at the top in row 1
' if necessary, change the criterion or add more criteria --> this is just based on your example
If .Cells(i, 4).Value <> "X" Then .Rows(i).Delete
Next i
End With
Application.ScreenUpdating = True
End Sub
Если вам нужно удалить действительно огромное количество строк, рекомендуется вместо этого установить объект диапазона, а затем удалить их сразу, поскольку это более эффективно, но я подозреваю, что приведенный выше код соответствует вашим требованиям.