Aplicar filtro automático em lista com VBA Excel

Como criar um gráfico com mapa do Brasil no Excel
Como criar um gráfico com mapa do Brasil no Excel
17 de julho de 2012
Procv Excel em planilhas diferentes usando Indireto Excel
Procv Excel em planilhas diferentes usando Indireto Excel
31 de julho de 2012

Aplicar filtro automático em lista com VBA Excel

Objetivo: Aplicar filtro automático em uma lista de dados a partir de um resumo Excel.

Objetivo do artigo

Neste artigo é demonstrado um pouco da forma como podemos interagir com a planilha através dos Eventos criados em VBA.

A implementação feita nesta planilha permite que ao dar um duplo clique sobre o nome do vendedor a lista Excel abaixo seja automaticamente filtrada.

E da mesma forma ao clicar na palavra “Limpar” o código Excel VBA faz automaticamente a limpeza dos filtros que haviam sido aplicados.

Criando a lista

A primeira coisa que deve-se fazer é a lista Excel, para isso basta dispor os dados em suas devidas colunas, no caso usamos, dia, mês, ano, valor e vendedor, sendo que o filtro será aplicado automaticamente conforme o vendedor.

Os dados não devem ser nunca misturados com outros, nestas colunas a partir dos seus cabeçalhos somente deverão existir os tipos de dados que se dispões no cabeçalho da tabela Excel.

Criando o resumo

O resumo foi criado colocando o cabeçalho vendedor e total. No campo de vendedor foram dispostos os nomes dos vendedores e no campo Total foi colocada a fórmula Excel Somase: =SOMASE(E8:$E$52400;D2;D8:$D$52400).

Esta fórmula realiza a soma das vendas de cada vendedor da lista, ignorando o filtro. Você pode ver mais em: http://guiadoexcel.com.br/funcao-somases-varias-condicoes-para-soma, inclusive com uma vídeo-aula.

Além disso foi escrito na célula B2 a palavra Limpar, sem nada a acrescentar por enquanto.

Aplicar o filtro automático em lista com VBA Excel

Agora para aplicar o filtro automaticamene foi adicionado o seguinte código VBA ao evento de duplo clique da planilha.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If (Target.Column = 4 And Target.Row >= 2 And Target.Row <= 5) And Target.Value  "" Then
        ActiveSheet.Range("$A$1:$E$518").AutoFilter Field:=5, Criteria1:=Target.Value, _
            Operator:=xlAnd
    Else
        If Target.Address = "$B$1" Then
            Application.EnableEvents = False
            Range("D7").Select
            Selection.AutoFilter
            Selection.AutoFilter
            Application.EnableEvents = True
        End If
    End If
End Sub

Este código realiza a aplicação do filtro se a coluna for a D e se a linha estiver entre a segunda e a quinta linha e se houver valor para aplicar o filtro. Deste modo só serão filtrados os dados na lista Excel se for clicado nesta coluna.

Logo abaixo da primeira verificação é aplicado o filtro utilizando o conteúdo da célula que foi clicada diretamente sobre a coluna E que é a coluna de vendedor.

Caso a célula que foi clicada não atenda os primeiros critérios o VBA realiza uma segunda verificação, para identificar se foi clicado na célula B1, e neste caso realizar a limpeza do filtro da lista de dados.

Conclusão filtro automático em lista com VBA Excel

Trabalhar com eventos no Excel VBA permite que tenhamos uma maior iteração com a planilha possibilitando inúmeras variações que podem agilizar a vida do usuário.

Download lista Excel VBA

Você pode fazer o download desta planilha e vê-la funcionando na prática clicando no botão abaixo.

Abraço

Marcos Rieper


Clique aqui e leia mais sobre Excel VBA. https://www.guiadoexcel.com.br/vba/ O Guia do Excel foi criado por Marcos Rieper e oferece artigos, dicas, tutoriais e modelos de planilhas prontas. Aqui você encontra tudo sobre Excel, seja de nível básico, intermediário,  avançado e VBA. O Guia do Excel oferece diversos materiais completamente gratuitos para download. Navegue em nosso site e confira! Conheça também a nossa Loja do Excel https://loja.guiadoexcel.com.br/

7 Comentários

  1. Frederico disse:

    Prezado Marcos,

    Excelente planilha, realmente é uma função a ser aplicada com muita utilidade em diversos relatórios.

    Ao testar a planilha, houve um erro no método AutoFilter do Range. Creio que o intervalo do Range deva ser Range(“$A$7:$E$518”) e não Range(“$A$1:$E$518”). Dê uma olhada para verificar se é isso mesmo.

    Abraço,

    Frederico

  2. Sodreh disse:

    Olá Marcos, existe uma forma de colocar uma caixa de busca em uma planilha do excel!??

  3. JAQUELINE disse:

    Boa noite

    Marcos, estou aprendendo há pouco tempo, e esbarrei em uma dificuldade.
    Eu consigo usar um filtro avançado para encontrar um critério em cada coluna mas não consigo saber como nem onde colocar a fórmula caso eu queira filtrar tres coisas numa mesma coluna. Por ex. Quero saber se um determinado valor está >=10 se o vendedor é Marcia e se o estado é RJ.
    Tem algum vídeo ou tuto com imagens pra eu entender melhor? Obrigada

  4. david wendell disse:

    Não consigo fazer download dos arquivos, poderiam me ajudar ?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.