You may try the following code (not tested as sample file not provided):
Sub test()
Dim lr As Long, i As Long
Dim value2 As Range
Set value2 = Sheets("Sheet3").Range("A1:A11")
lr = Sheets("sheet2").Cells(Rows.Count, "A").End(xlUp).Row
For i = lr To 1 Step -1
If IsError(Application.Match(Sheets("Sheet2").Cells(i, "A"), value2, 0)) Then
Sheets("Sheet2").Rows(i).Delete shift:=xlUp
End If
Next i
End Sub
the approach is bottom-up, with every sheet2 element tested if it is within the list on sheet3.
if not - it is deleted.
Bookmarks