Vba: copie linhas para outra planilha com base em critérios


Você pode usar a seguinte sintaxe no VBA para copiar cada linha de uma planilha que atenda a critérios específicos para outra planilha:

 Sub CopyToAnotherSheet()

   Dim LastRow As Long

  'Find last used row in a Column A of Sheet1
   With Worksheets(" Sheet1 ")
      LastRow = .Cells(.Rows.Count, " A ").End(xlUp).Row
   End With

   'Find first row where values should be posted in Sheet2
   With Worksheets(" Sheet2 ")
      j = .Cells(.Rows.Count, " A ").End(xlUp).Row + 1
   End With
   
   'Paste each row that contains "Mavs" in column A of Sheet1 into Sheet2
   For i = 1 TB LastRow
       With Worksheets(" Sheet1 ")
           If .Cells(i, 1).Value = "Mavs" Then
               .Rows(i).Copy Destination:=Worksheets(" Sheet2 ").Range(" A " & j)
               j = j + 1
           End If
       End With
   Next i
   
End Sub

Esta macro específica copiará cada linha de Sheet1 onde a coluna A é igual a “Mavs” e colará cada uma dessas linhas nas próximas linhas disponíveis de Sheet2 .

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: copiar linhas para outra planilha com base em critérios usando VBA

Suponha que temos o seguinte conjunto de dados na Planilha 1 , que contém informações sobre vários jogadores de basquete:

E suponha que temos o seguinte conjunto de dados em Sheet2 :

Observe que a Planilha2 contém apenas dados dos jogadores do time Warriors.

Digamos que queremos copiar cada linha de Sheet1 onde a coluna Team é igual a Mavs e colar cada uma dessas linhas nas próximas linhas disponíveis de Sheet2 .

Podemos criar a seguinte macro para fazer isso:

 Sub CopyToAnotherSheet()

   Dim LastRow As Long

  'Find last used row in a Column A of Sheet1
   With Worksheets(" Sheet1 ")
      LastRow = .Cells(.Rows.Count, " A ").End(xlUp).Row
   End With

   'Find first row where values should be posted in Sheet2
   With Worksheets(" Sheet2 ")
      j = .Cells(.Rows.Count, " A ").End(xlUp).Row + 1
   End With
   
   'Paste each row that contains "Mavs" in column A of Sheet1 into Sheet2
   For i = 1 TB LastRow
       With Worksheets(" Sheet1 ")
           If .Cells(i, 1).Value = "Mavs" Then
               .Rows(i).Copy Destination:=Worksheets(" Sheet2 ").Range(" A " & j)
               j = j + 1
           End If
       End With
   Next i
   
End Sub

Quando executamos esta macro, recebemos a seguinte saída em Sheet2 :

Observe que cada linha em Sheet1 onde o nome da equipe era igual a Mavs foi colada nas próximas linhas disponíveis em Sheet2 .

Nota : Você pode encontrar a documentação completa do método VBA Copy aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:

VBA: Como encontrar a última linha usada
VBA: Como contar o número de linhas no intervalo
VBA: Como contar o número de colunas usadas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *