Как это сделать в al oop. Это больше кода, но более эффективно, чем текущий метод. @BigBen правильно, что фильтр является оптимальным, учитывая текущую постановку задачи
Sub Reduce()
'Declare variables
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- Update Sheet
Dim LR As Long
Dim xCell As Range, xRange As Range
Dim DeleteMe As Range
'Assign/Set necessarry variables
LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Set xRange = ws.Range("A2:A" & LR)
'Create Union (Collection Of Rows) to Delete
For Each xCell In xRange
If Not InStr(xCell.Offset(0, 1), "X") Then
If Not DeleteMe Is Nothing Then
Set DeleteMe = Union(xCell, DeleteMe)
Else
Set DeleteMe = xCell
End If
End If
Next xCell
'Delete the Union
If Not DeleteMe Is Nothing Then
DeleteMe.EntireRow.Delete
End If
End Sub