Try this AutoFilter code, which will be much faster than a Find-FindNext loop. You need to put column headings in row 1 of the source sheet for this method to work.
Sub Filter()
Dim wsSource As Worksheet, wsResult As Worksheet
Set wsSource = Sheets("Sheet1")
Set wsResult = Sheets("Sheet2")
wsResult.Cells.ClearContents
With wsSource
'AutoFilter on column B (field 2) containing dog
.Cells.AutoFilter Field:=2, Criteria1:="=*dog*"
'Copy filtered rows to result sheet
.AutoFilter.Range.Copy wsResult.Range("A1")
'Turn off autofilter
.Cells.AutoFilter
End With
End Sub
Obviously the Criteria1:="=*dog*" part can be modified to use a search string in a cell.
Bookmarks