Вы не можете вставить строку в ячейку E5, например, потому что скопирована строка будет длиннее, чем пространство, вы позволяете вставить в
For Each cell In Sheets("EMAIL DATA").Range("E:E")
If cell.Value = "Rob" Then
Worksheets(2).Range("E5").EntireRow.Value = cell.EntireRow.Value
End If
Next
Но что будет держать над верхом то же самое ряд, лучше что-то вроде
i = 1
For Each cell In Sheets("EMAIL DATA").Range("E:E")
If cell.Value = "Rob" Then
Worksheets(2).Cells(i, 1).EntireRow.Value = cell.EntireRow.Value
i = i + 1
End If
Next
Также смотрите на получение последней ячейки в столбце Е, так что вы не тратить время перебора всех 1 миллионы строк, как Sheets(1).Range("E" & Cells(Rows.Count, 5).End(xlUp).Row)
EDIT
В соответствии с Вашим комментарием
i = 1
For Each cell In Sheets("EMAIL DATA").Range("E" & Cells(Rows.Count, 5).End(xlUp).Row)
If cell.Value = "Rob" Then
Worksheets(2).Cells(i, 1).Resize(, 5).Value = Cells(cell.Row, 1).Resize(, 5).Value
i = i + 1
End If
Next
Возможный дубликат [копирования строк VBA, которые соответствуют критериям на другой лист] (http://stackoverflow.com/questions/21074874/vba- copy-rows-that-meet-criteria-to-another-sheet) –