If "sarah" may be anyplace (start, mid, end) in the string in the cell, let's try using InStr (In String). See VBA help for a description.
You could also use AutoFilter with "contains", but I chose just to loop thru the rows.
In a Standard Module:
Option Explicit
Sub exa()
Dim _
wksDest As Worksheet, _
wbDest As Workbook, _
rngSource As Range, _
lRow As Long, _
lCol As Long, _
i As Long, _
ii As Long
'// Set a reference to a newly created one-sheet workbook. //
Set wbDest = Workbooks.Add(xlWBATWorksheet)
'// Set a reference to the sheet within. //
Set wksDest = wbDest.Worksheets(1)
'// Change source sheetname to suit. //
With ThisWorkbook.Worksheets("Sheet1")
'// Presumes we are safe in using the last cell in Col A to set the bottom //
'// row in our range, and uses the last Col in row 1 with data to set //
'// the rightmost col in our range of interest. //
lRow = .Cells(.Rows.Count, "A").End(xlUp).Row
lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
'// Set a reference to the range we want to look thru. Actually, I was //
'// writing a bit fast, this could easily be just Col A, as we are only //
'// looking for "sarah" there... //
Set rngSource = .Range(.Range("A2"), .Cells(lRow, lCol))
'// Copy the header row.. //
.Range("A1").EntireRow.Copy wksDest.Range("A1")
ii = 1
For i = 1 To rngSource.Rows.Count
'// Use InStr to see if "sarah" is anyplace in the string in each cell //
If InStr(1, rngSource(i, 1).Value, "sarah", vbTextCompare) > 0 Then
'// Use a counter to keep track of where we need to paste the next //
'// row.
ii = ii + 1
rngSource(i, 1).EntireRow.Copy wksDest.Range("A" & ii)
End If
Next
End With
End Sub
Hope that helps,
Mark