Blog

Postado em em 30 de janeiro de 2021

Filtro Avançado no VBA – Como Utilizar?

Nesta aula vamos te mostrar como utilizar o Filtro Avançado no VBA. É isso mesmo, vamos te mostrar como utilizar essa ferramenta com o VBA!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso Canal do YouTube para mais vídeos!

Para receber a planilha que usamos na aula no seu e-mail, preencha:

Como Utilizar o Filtro Avançado no VBA

Você já deve ter ouvido falar ou viu nosso vídeo aqui no canal sobre Filtro Avançado. Essa é uma ferramenta muito útil, mas hoje vamos ensinar como utilizar o Filtro Avançado no VBA.

O que queremos fazer é, a partir de uma área preenchida com valores e campos, filtrar uma outra área preenchida com diversas informações a serem filtradas, usando código em VBA associado com o Excel para atingir esse objetivo. Para isso, teremos que:

  • Abrir o VBA, com Alt(+Fn)+F11
  • Inserir > Módulo
  • Inserir os códigos abaixo como novas subs no módulo
Sub filtro_avancado_local()

Range("A4").CurrentRegion.AdvancedFilter xlFilterInPlace, Range("A1").CurrentRegion

End Sub

Explicação (filtro_avancado_local):

A partir da célula A4, vamos selecionar todas as células preenchidas para direita e para baixo (Ctrl+T) contínuas.

Nessa seleção, queremos usar o filtro avançado VBA, fazendo o filtro no local. Ou seja, fazer o filtro e deixar o resultado no mesmo local da tabela que começa na célula A4.

Os critérios serão o intervalo de células preenchidas para direita e para baixo a partir da célula A1, que é a tabela que passa para o código o que servirá de filtro para a tabela que começa em A4.

Sub limpa_filtro()

Sheets("FiltroAvancado").ShowAllData

End Sub

Explicação (limpa_filtro):

O código acima vai simplesmente retirar todos os filtros aplicados na aba “FiltroAvancado”.

Sub filtro_avancado_copiar()

Range("F4").CurrentRegion.Clear
Range("A4").CurrentRegion.AdvancedFilter xlFilterCopy, Range("A1").CurrentRegion, Range("F4")

End Sub

Explicação (filtro_avancado_copiar):

Antes de tudo devemos apagar tudo que está escrito a partir de F4, observando as células a direita e abaixo, contínuas, preenchidas, para que entrem novas informações.

A partir da célula A4, vamos selecionar todas as células preenchidas para direita e para baixo (Ctrl+T) contínuas.

Nessa seleção, queremos usar o filtro avançado, fazendo o filtro, que será copiado para outro local, que no caso será a célula F4. Ou seja, o código irá fazer o filtro e deixar o resultado exposto a partir da célula F4.

Os critérios serão o intervalo de células preenchidas para direita e para baixo a partir da célula A1, que é a tabela que passa para o código o que servirá de filtro para a tabela que começa em A4.

Podemos fazer também uma coisa muito interessante: aplicar o filtro avançado a cada vez que mudarmos alguma das células de interesse da tabela que começa em A1.

Ou seja, quando mudarmos alguma das células da tabela que irá funcionar de filtro, ativamos/utilizamos o filtro avançado.

Para isso, associaremos um evento de mudança nas células que desejamos para que o filtro avançado seja aplicado. Para isso, precisamos:

  • Abrir o VBA, com Alt(+Fn)+F11
  • A esquerda, procurar por Planilha1 (FiltroAvancado)
  • Duplo clique com botão esquerdo do mouse nessa planilha
  • Inserir os códigos abaixo como uma nova Sub
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row = 2 And Target.Column <= 4 Then
   Call filtro_avancado_copiar
End If

End Sub

Explicação:

O Target representa a célula alvo para que seja disparado o evento change (mudança). Com isso, as células da segunda linha da aba “FiltroAvancado”, das colunas A até D serão os alvos, porque nelas entrarão os valores de dados a servirem de filtro da nossa tabela a partir de A4.

A condição verificada será que se o Target estiver na linha 2, e nas colunas 1, 2, 3 ou 4 (ou seja, A, B, C ou D), irá ser disparado/chamado o nosso código de “filtro_avancado_copiar” explicado acima. E se encerra a nossa sub.

Conclusão – Filtro Avançado no VBA

Nesse post aprendemos como aplicar um filtro avançado VBA Excel para obter só as informações que queremos de uma tabela!

Entendemos também como pode ser associada essa ferramenta com o Evento Change, para que de forma automática esse filtro possa ser aplicado, assim que escrevermos o valor necessário para fazer o filtro avançado.

Espero que não tenha ficado nenhuma dúvida! Até o próximo post! Fique ligado no nosso canal do Youtube para mais conteúdo de Excel e VBA! Um abraço!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?