A base de dados está em uma planilha "A" que é alimentada mensalmente, eu gostaria que o resultado do filtro avançado fosse copiado (copytorange) para a primeira linha fazia da outra planilha "B" que já tem os dados do mês anterior nas linhas acima.
A base de dados está em uma planilha "A" que é alimentada mensalmente, eu gostaria que o resultado do filtro avançado fosse copiado (copytorange) para a primeira linha fazia da outra planilha "B" que já tem os dados do mês anterior nas linhas acima.
Oi, Marcia, tudo bem?
Para copiar para a primeira célula vazia da outra planilha, podemos usar um For Each
que vai percorrer a coluna até encontrar a célula vazia por meio do comando IsEmpty
. Com relação ao filtro avançado, precisamos definir o intervalo de busca, bem como os critérios do filtro e onde esse resultado aparecerá.
Um exemplo de código que pode te ajudar na construção do seu projeto está abaixo:
Sub CopiarCelula()
Dim primeiraAba As Worksheet
Dim sengundaAba As Worksheet
Dim intervaloBusca As Range
Dim criterioFiltro As Range
Dim resultadoFiltroComCabecalho As Range
' Defina as planilhas
Set primeiraAba = ThisWorkbook.Sheets("A") ' Substitua "A" pelo nome da sua planilha
Set sengundaAba = ThisWorkbook.Sheets("B") ' Substitua "B" pelo nome da sua planilha
' Defina o intervalo de lista e critérios
Set intervaloBusca = primeiraAba.Range("A1:C9")
Set criterioFiltro = primeiraAba.Range("G1:I2")
Set resultadoFiltroComCabecalho = primeiraAba.Range("E14:G14")
intervaloBusca.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=resultadoFiltroComCabecalho, Unique:=False, criteriaRange:=criterioFiltro
Set ResultadoFiltroSemCabecalho = primeiraAba.Range("E15:G15")
' Copia para a primeira linha vazia da segunda aba
For Each cell In sengundaAba.Columns(1).Cells
If IsEmpty(cell) = True Then
ResultadoFiltroSemCabecalho.Copy Destination:=cell
Exit For
End If
Next
End Sub
Todavia, vale ressaltar que como é um assunto externo aos cursos da Alura e que não tenho acesso ao cenário completo do projeto outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema.
Abraços e bons estudos!