Página 1 de 1

Filtro Avançado com VBA - Extrair dados de várias planilhas

Enviado: 21 Out 2016 às 09:12
por JNilson
Amigos,

Na minha pasta de trabalho tenho as planilhas A, B e C.

Estou tentando extrair os dados das planilhas A e B, e copiar na planilha C (Filtro avançado).

Através do comando Elseif, consegui fazer o excel buscar os dados da planilha A ou da planilha B, conforme o preenchimento de determinada condição. Mas não consegui copiar os dados das planilhas A e B ao mesmo tempo.

O Excel está copiando primeiramente os dados da planilha A, e depois copia os dados da planilha B no mesmo lugar que havia copiado os da planilha A, ou seja, está substituindo os dados plan A pelos da B.

Tenho que mudar o range que receberá os dados da planilha B, pois está igual ao da planilha A, mas não estou conseguindo fazer essa mudança, mantendo o filtro avançado funcionando.

Acho que deveria ter um código para, após copiar os dados da planilha A, achar a primeira célula vazia de determinada coluna, e assim copiar os da dados da planilha B.

Se puderem me ajudar, agradeço.

Re: Filtro Avançado com VBA - Extrair dados de várias planil

Enviado: 21 Out 2016 às 10:12
por alexandrevba
Bom dia!!

Com essas informações te ajudar vai ser complicado.
Código: Selecionar todos
Sub CopiaSemCriterio()
Dim ws  As Worksheet, LR1 As Long, LR2 As Long
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> "Guia_A" Then
        LR1 = Sheets("Guia_A").Range("A" & Rows.Count).End(xlUp).Row + 1
        LR2 = ws.Range("A" & Rows.Count).End(xlUp).Row
        ws.Range("A1:J" & LR2).Copy Destination:=Sheets("Guia_A").Range("A" & LR1)
    End If
Next ws
Application.ScreenUpdating = True
End Sub
Por favor, poste seu arquivo modelo!
Att

Re: Filtro Avançado com VBA - Extrair dados de várias planil

Enviado: 26 Out 2016 às 23:21
por JNilson
Amigo, muito obrigado pela atenção.

Eu entendo pouquíssimo de VBA, por isso, não consegui aplicar o seu código ao meu caso.

Coloco abaixo o código que estou tentando fazer funcionar:

Tenho 6 planilhas no meu projeto: planilha 2016, planilha 2017, planiha 2018, planiha 2019, planilha 2020 e Relatorio.

Coloquei uma condição para, de acordo com o valor da célula "B14" da planilha Relatorio, o excel filtrar os dados de determinada planilha e copiar para a planilha Relatório. Por exemplo: se o valor da célular "B14" for 2016, buscará os dados da planilha 2016. Até aí ocorre tudo bem.

No entanto, quero que, se a célula B14 estiver vazia, que filtre os dados de todas a plnilhas: Filtre os dados planilha 2016, depois, logo abaixo, filtre os dados da planilha 2017 e assim por diante.

Não estou conseguindo fazer isso. Ele copia os dados da planilha 2016, e quando vai copiar os dados da planilha 2017, aparece o erro "O intervalo de extração tem um nome de campo ausente ou inválido".

Se puder me ajudar, agradeço.

Segue o código abaixo:

Public Sub GerarR()

‘Filtrar dados da planilha 2016

If shtRelatorio.Range("b14").Value = 2016 Then

Sheets("Planilha 2016").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False


'Filtrar dados da Planilha Planilha 2017

ElseIf shtRelatorio.Range("b14").Value = 2017 Then

Sheets("Planilha 2017").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False

‘Filtrar Dados da Planilha Planilha 2018

ElseIf shtRelatorio.Range("b14").Value = 2018 Then

Sheets("Planilha 2018").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False

‘Filtrar Dados da Planilha Planilha 2019

ElseIf shtRelatorio.Range("b14").Value = 2019 Then

Sheets("Planilha 2019").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False

‘Filtrar dados da Planilha 2020

ElseIf shtRelatorio.Range("b14").Value = 2020 Then

Sheets("Planilha 2020").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False

' Filtrar os dados de todas as as planilhas


ElseIf shtRelatorio.Range("b14").Value = "" Then

Sheets("Planilha 2016").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("f2:h3"), CopyToRange:=shtRelatorio.Range("f7:j7"), Unique:=False

shtRelatorio.Range("f722").End(xlUp).Offset(1, 0).Select

Sheets("Planilha 2017").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("f2:h3"), CopyToRange:=ActiveCell, Unique:=False


End If

End Sub

Filtro Avançado com VBA - Extrair dados de várias planilhas

Enviado: 27 Out 2016 às 06:34
por DJunqueira
2 tópicos s/ mesmo assunto.

Re: Filtro Avançado com VBA - Extrair dados de várias planil

Enviado: 27 Out 2016 às 07:18
por alexandrevba
Bom dia!!!

Leia meu primeiro post, nele tem escrito em negrito vermelho as informações necessárias caso não consiga adaptar o código.


Att