No VBA, você pode criar AutoFiltro para filtrar um intervalo de células ou uma tabela do Excel. Neste tutorial, você aprenderá como criar AutoFiltro para uma ou várias colunas e para várias condições.
Se você quiser aprender como usar um filtro avançado no VBA, clique aqui: Filtro avançado VBA
Criando AutoFiltro em VBA
Primeiro, você verá como apenas criar AutoFiltro em um intervalo, para que um usuário possa filtrar os dados. Os dados que usaremos nos exemplos estão na Imagem 1:
Imagem 1. Dados para exemplos de AutoFiltro
Aqui está o código para criar AutoFiltro:
1 | Sheet1.Range ("A1: E1"). AutoFiltro |
Para habilitar AutoFiltro, precisamos especificar o cabeçalho do intervalo, em nosso caso A1: E1, e usar o AutoFiltro método do objeto Faixa. Como resultado, nosso intervalo de dados tem filtros ativados:
Imagem 2. AutoFiltro habilitado para os dados
AutoFiltro com parâmetros de campo e critérios
O VBA também permite que você filtre automaticamente um determinado campo com determinados valores.
Para fazer isso, você deve usar parâmetros Campo e Criteria1 do método AutoFiltro. Neste exemplo, queremos filtrar a terceira coluna (produtos) para Produto A só. Aqui está o código:
12 | Sheet1.Range ("A1: E1"). Campo do AutoFiltro: = 3, _Criteria1: = "Produto A" |
No Campo parâmetro, você pode definir o número da coluna no intervalo (não no Excel), enquanto em Criteria1 você pode colocar o valor que deseja filtrar. Depois de executar o código, nossa tabela fica assim:
Imagem 3. AutoFiltro com campo e critérios
Como você pode ver, apenas linhas com Produto A na terceira coluna são exibidos no intervalo de dados.
AutoFiltro com valores de campo e vários critérios
Se você deseja filtrar um campo com vários valores, você precisa usar o parâmetro Operador do AutoFiltro método. Para filtrar vários valores, você precisa definir Operador para xlFilterValues e também colocar todos os valores de Critério em uma matriz. Neste exemplo, filtramos o produtos coluna para Produto A e Produto B. Aqui está o exemplo de código:
123 | Sheet1.Range ("A1: E1"). Campo do AutoFiltro: = 3, _Criteria1: = Matriz ("Produto A", "Produto B"), _Operador: = xlFilterValues |
Quando executamos o código, obtemos apenas linhas com o Produto A e o Produto B, como você pode ver na Imagem 4:
Imagem 4. AutoFiltro com vários valores de critérios
Intervalo de dados do filtro automático com vários critérios
Se você deseja filtrar um campo com vários critérios, você deve usar Criteria1 e Criteria2 parâmetros, mas também o Operador xlAnd.
No próximo exemplo, vamos filtrar a primeira coluna (Encontro) para datas em dezembro de 2022. Portanto, temos dois critérios: uma data maior que 01/12/18 e menor que 31/12/18. Este é o código:
1234 | Sheet1.Range ("A1: E1"). Campo do AutoFiltro: = 1, _Criteria1: = "> = 12/01/2018", _Operador: = xlAnd, _Critério2: = "<= 31/12/2018" |
Quando executamos o código, você pode ver que apenas as datas em dezembro são exibidas no intervalo de dados:
Imagem 5. AutoFiltro com vários critérios para o campo
Os valores dos parâmetros do operador do método AutoFiltro
Na próxima tabela. você pode ver todos os valores possíveis do Operador parâmetro do método AutoFilter e suas descrições:
Operador | Descrição |
xlAnd | Inclui vários critérios - Critério 1 e Critério 2 |
xlOr | Inclui um dos vários critérios - Critério 1 ou Critério 2 |
xlTop10Items | Filtra um determinado número de valores com classificação mais alta (número especificado no Critério 1) |
xlBottom10Items | Filtra um certo número de valores com classificação mais baixa (número especificado no Critério 1) |
xlTop10Percent | Filtra uma certa porcentagem dos valores com classificação mais alta (% especificada no Critério 1) |
xlBottom10Percent | Filtra uma certa porcentagem dos valores com classificação mais baixa (% especificada no Critério 1) |
xlFilterValues | Inclui vários valores de critérios com Array |
xlFilterCellColor | Filtra células por cores |
xlFilterFontColor | Filtra células para cores de fonte |
xlFIlterIcon | Ícones de filtros |
xlFilterDynamic | Filtrar valores dinâmicos |