VBA – Auto Filtro
In this Article
No VBA, você pode usar o AutoFiltro do Excel para filtrar um intervalo de células ou uma tabela do Excel.
Observação: se você quiser saber como usar um filtro avançado no VBA, clique aqui: Filtro avançado VBA
Criar o AutoFiltro no VBA
Primeiro, demonstraremos como fazer o AutoFiltro de um intervalo, para que o usuário possa filtrar os dados. Os dados que usaremos nos exemplos estão na Imagem 1:
Aqui está o código para criar o AutoFiltro:
Planilha1.Range("A1:E1").AutoFilter
Para ativar o AutoFilter, precisamos especificar o cabeçalho do intervalo, no nosso caso A1:E1, e usar o método AutoFilter do objeto Range. Como resultado, nosso intervalo de dados tem filtros ativados:
Imagem 2. AutoFiltro ativado 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, é necessário usar os parâmetros Field e Criteria1 do método AutoFilter. Neste exemplo, queremos filtrar a terceira coluna(Produto) somente para o Produto A. Aqui está o código:
Planilha1.Range("A1:E1").AutoFilter Field:=3, _
Criteria1:="Produto A"
No parâmetro Field, 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 terá a seguinte aparência:
Imagem 3. AutoFiltro com campo e critérios
Como você pode ver, somente as linhas com o Produto A na terceira coluna são exibidas no intervalo de dados.
AutoFiltro com Campo e Vários Valores de Critérios
Se quiser filtrar um campo com vários valores, você precisará usar o parâmetro Operator do método AutoFilter. Para filtrar vários valores, você precisa definir Operator como xlFilterValues e também colocar todos os valores de Criteria em uma Array. Neste exemplo, filtramos a coluna Produto para o Produto A e o Produto B. Aqui está o exemplo de código:
Planilha1.Range("A1:E1").AutoFilter Field:=3, _
Criteria1:=Array("Produto A", "Produto B"), _
Operator:=xlFilterValues
Quando executamos o código, obtemos apenas linhas com Product A e Product B, como você pode ver na Imagem 4:
Imagem 4. AutoFiltro com vários valores de critérios
Intervalo de Dados do AutoFiltro com Vários Critérios
Se você quiser filtrar um campo com vários critérios, deverá usar os parâmetros Criteria1 e Criteria2 e também o operador xlAnd.
No próximo exemplo, filtraremos a primeira coluna(Data) para datas em dezembro de 2018. Portanto, temos dois critérios: uma data maior que 01/12/18 e menor que 31/12/18. Este é o código:
Planilha1.Range("A1:E1").AutoFilter Field:=1, _
Criteria1:=">=12/01/2018", _
Operator:=xlAnd, _
Criteria2:="<=12/31/2018"
Quando executamos o código, você pode ver que somente as datas de dezembro são exibidas no intervalo de dados:
Imagem 5. AutoFiltro com vários critérios para o campo
Os Valores do Parâmetro Operator do Método AutoFilter
Na próxima tabela, você pode ver todos os valores possíveis do parâmetro Operator do método AutoFilter e suas descrições:
Operator | Descrição |
xlAnd | Inclui vários critérios – Critério 1 e Critério 2 |
xlOr | Inclui um dos critérios múltiplos – Critério1 ou Critério 2 |
xlTop10Items | Filtra um determinado número de valores mais bem classificados (número especificado em Critério 1) |
xlBottom10Items | Filtra um determinado número de valores com a classificação mais baixa (número especificado no Critério1) |
xlTop10Percent | Filtra uma determinada porcentagem dos valores mais bem classificados (% especificado em Critério1) |
xlBottom10Percent | Filtra uma determinada porcentagem dos valores com classificação mais baixa (% especificada em Critério1) |
xlFilterValues | Inclui vários valores de critérios com Array |
xlFilterCellColor | Filtra células por cores |
xlFilterFontColor | Filtra células para cores de fontes |
xlFIlterIcon | Ícones de filtros |
xlFilterDynamic | Filtra valores dinâmicos |