Hi wali

Should you choose to go this route
The procedure probably could be modified to skip these invalid items
insert two lines of code as follows
For varRow = 1 To LR
                On Error Resume Next
                If InStr(LCase(ws.Cells(varRow, 1).Value), varSearchString) <> 0 Then
                    LR = wsTemp.Range("A" & Rows.Count).End(xlUp).Row
                    wsTemp.Range("A" & LR).Offset(1, 0).Value = ws.Cells(varRow, 1).Value
                End If
               On Error GoTo 0
Let me know how you make out.