Sub Test_Macro()
Last = Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To Last
If InStr((Cells(i, "B").Value), "ltd") > 0 _
Or InStr((Cells(i, "B").Value), "limited") > 0 _
Or InStr((Cells(i, "B").Value), "plc") > 0 Then
Cells(i, "J").Value = "Y"
Else: Cells(i, "J").Value = "N"
End If
Next i
End Sub
Sub DelIt()
Dim rFnd As Range, dRng As Range, rFst As String, myList, ArrCnt As Long
myList = Array("BL18", "AN06", "MP01")
For ArrCnt = LBound(myList) To UBound(myList)
With Range("D1:D" & Range("D" & Rows.Count).End(xlUp).Row)
Set rFnd = .Find(what:=myList(ArrCnt), _
LookIn:=xlValues, _
lookat:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=True)
If Not rFnd Is Nothing Then
rFst = rFnd.Address
Do
If dRng Is Nothing Then
Set dRng = Range("A" & rFnd.Row)
Else
Set dRng = Union(dRng, Range("A" & rFnd.Row))
End If
Set rFnd = .FindNext(After:=rFnd)
Loop Until rFnd.Address = rFst
End If
Set rFnd = Nothing
End With
Next ArrCnt
If Not dRng Is Nothing Then dRng.EntireRow.Delete
End Sub
Try the code below. To add more criteria amend the part in red.
Rich (BB code):Sub DelIt() Dim rFnd As Range, dRng As Range, rFst As String, myList, ArrCnt As Long myList = Array("BL18", "AN06", "MP01") For ArrCnt = LBound(myList) To UBound(myList) With Range("D1:D" & Range("D" & Rows.Count).End(xlUp).Row) Set rFnd = .Find(what:=myList(ArrCnt), _ LookIn:=xlValues, _ lookat:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=True) If Not rFnd Is Nothing Then rFst = rFnd.Address Do If dRng Is Nothing Then Set dRng = Range("A" & rFnd.Row) Else Set dRng = Union(dRng, Range("A" & rFnd.Row)) End If Set rFnd = .FindNext(After:=rFnd) Loop Until rFnd.Address = rFst End If Set rFnd = Nothing End With Next ArrCnt If Not dRng Is Nothing Then dRng.EntireRow.Delete End Sub