2017-02-16 4 views
0

У меня есть код ниже, который выбирает значение, которое я хочу, однако я хочу знать, как я могу затем скопировать эту строку на основе нахождения этого значения, а затем вставить в другой рабочий лист на конкретная точка, например Рабочий лист 2 E5.Как скопировать и вставить строку на основе значения ячейки

For Each cell In Sheets("EMAIL DATA").Range("E:E") 
    If cell.Value = "Rob" Then 
     'Do something 
    End If 
Next 
+3

Возможный дубликат [копирования строк VBA, которые соответствуют критериям на другой лист] (http://stackoverflow.com/questions/21074874/vba- copy-rows-that-meet-criteria-to-another-sheet) –

ответ

0

Вы не можете вставить строку в ячейку 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 
+0

Привет, Тим, это полезно. Однако, как я могу копировать только ячейки A2-E2, например, если это значение было Rob в E2 для определенной точки на моем втором листе. –

+0

@RobBlagg см. Мое редактирование –

+1

В окончательном редактировании, похоже, есть опечатка. Я чувствую, что строка ~ Для каждой ячейки In Sheets («EMAIL DATA»). Range («E» & Cells (Rows.Count, 5) .End (xlUp) .Row) ~ следует читать как ~ Для каждой ячейки In Sheets («EMAIL DATA»). Диапазон («E1: E» и ячейки (Rows.Count, 5) .End (xlUp) .Row) ~ – skkakkar

Смежные вопросы