2016-03-23 10 views
0

Привет, все, у меня есть лист с более чем 60 000 строк, и я хочу скопировать все строки на новый лист, если столбец строки содержит определенное значение, например, Energizer, как в следующем кодеКопирование строк с определенным значением vba excel

Sub Macro3() 
    Dim rngA As Range 
    Dim cell As Range 
    Set col = Cells(Rows.Count, "A").End(xlUp) 

    Set rngA = Range("A2", col) 
    For Each cell In rngA 
     If cell.Value = "Energizer" Then 
      cell.EntireRow.Copy 

     End If 
    Next cell 

End Sub 

Код не работает вообще, что можно сделать?

+0

Ваш целевой аргумент не существует. Обратитесь к справке по методу range.copy –

ответ

2

Следующие копии копируют все строки, содержащие «Energizer» в столбце A в буфер обмена.

Sub Macro3() 
    Dim rngA As Range 
    Dim cell As Range 
    Dim col As Range 
    Dim copiedRange As Range 
    Dim r As Integer 

    Set col = Cells(Rows.Count, "A").End(xlUp) 
    r = 0 
    Set rngA = Range("A2", col) 

    For Each cell In rngA 
     If cell.Value = "Energizer" Then 
      If r = 0 Then 
       Set copiedRange = cell.EntireRow 
       r = 1 
      Else 
       Set copiedRange = Union(copiedRange, cell.EntireRow) 
      End If 
     End If 
    Next cell 


    If r = 1 Then 
     copiedRange.Copy 
    End If 


End Sub 

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

+0

Переменная объекта или с не установленным блоком. При попытке отладки он останавливается рядом с копией. – user3237076

+0

Я изменил код таким образом, что диапазон копируется только в том случае, если copyedRange не пуст. Он работает сейчас? Если нет, можете ли вы загрузить свой стол? Потому что код работает отлично для меня. – LMM9790

0

Если это действительно весь ваш код, вы забыли вставить скопированную строку на новый лист.

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