VBA AutoFilter

Excel VBA AutoFilter

O AutoFiltro no VBA é usado como uma expressão e a sintaxe para ele da seguinte maneira Expressão. Autofiltro (campo, critério 1, operador, critério 2, lista suspensa) todos os argumentos são opcionais. O filtro é útil para filtrar os dados específicos dos dados enormes.

Se você é um usuário regular, os filtros do Excel não são uma coisa estranha para você. Algumas das ferramentas que usamos na planilha também estão integradas ao VBA e a opção de filtro automático é uma das ferramentas importantes disponíveis no VBA. Como todos sabemos, o filtro do Excel está disponível na guia de dados.

Usando esta opção de filtro, podemos brincar com os dados. Se você estiver lidando com uma quantidade mínima de dados e achar que a opção de filtro automático VBA não é realmente necessária, pode continuar a usar a opção de filtro de planilha.

Se você estiver lidando com uma grande quantidade de dados, poderá usar a opção Autofilter para simplificar o fluxo do processo.

Sintaxe da função AutoFilter

O AutoFiltro no Excel VBA pode ser usado com um objeto de intervalo. Como nossas outras funções, esta também tem sua própria sintaxe.

  • Intervalo: intervalo é simplesmente o intervalo em que você gostaria de aplicar o filtro.
  • Campo: Campo significa de qual coluna do intervalo você selecionou deseja filtrar os dados. Uma coluna será contada da esquerda para a direita.

Por exemplo, se o seu intervalo for de A1 a D100 e você quiser aplicar um filtro para a coluna D, o número do seu campo é 4 porque no intervalo selecionado D é a quarta coluna.

Critério 1: no campo, você selecionou o que deseja filtrar.

  • Operador: se você deseja aplicar mais de um critério para filtrar os dados, precisamos usar símbolos de operador. Alguns dos códigos de operadora são os seguintes.

xlAnd, xlOr, xlBottom10Items, xlTop10Items, xlTop10Percent, xlBottom10Percent, xlFilterCellColor, xlFilterDynamic, xlFilterFontColor, xlFilterIcon, xlFilterValues.

Critério 2: qual é a segunda coisa que você deseja filtrar junto com o Critério 1?

  • Lista suspensa visível: Você deseja exibir o ícone do filtro para baixo na coluna filtrada. Se você deseja exibir TRUE é o argumento, se não FALSE é o argumento.

Como aplicar filtro usando o VBA AutoFilter? (com exemplo)

Você pode baixar este modelo VBA AutoFilter aqui - Modelo VBA AutoFilter

Suponha abaixo os dados nos quais você está trabalhando.

Agora, usando o código VBA, vamos aplicar o filtro. Siga as etapas abaixo para aplicar o filtro.

Etapa 1: inicie o subprocedimento dando um nome à macro.

Código:

 Sub AutoFilter_Example1 () End Sub 

Etapa 2: a primeira  coisa é em qual intervalo precisamos aplicar o filtro. Nesse caso, precisamos aplicar o intervalo de A1 a E25.

Código:

 Sub AutoFilter_Example1 () Range ("A1: E25") End Sub 

Etapa 3: Uma vez que o intervalo foi selecionado, agora aplique a opção de filtro automático.

Código:

 Sub AutoFilter_Example1 () Range ("A1: E25"). AutoFilter End Sub 

Não estamos selecionando nenhum valor usando um filtro automático, mas apenas aplicando o filtro neste momento.

Execute o código usando a tecla F5 ou manualmente ele irá inserir o filtro para o intervalo selecionado.

Portanto, aplicou um filtro aos dados. Agora veremos como filtrar os dados.

Exemplo # 1 - Filtrar dados usando o AutoFiltro

Considere os mesmos dados do exemplo acima. Agora precisamos filtrar o departamento “Finanças” da coluna de departamento.

Etapa 1: Após a aplicação do filtro, o primeiro argumento é mencionar de qual coluna estamos filtrando os dados. Nesse caso, precisamos filtrar os dados da coluna Departamento, portanto, o número da coluna é 5.

Código:

 Sub AutoFilter_Example1 () Range ("A1: E25"). Campo AutoFilter: = 5, End Sub 

Etapa 2: o critério 1 nada mais é do que o que queremos filtrar da 5ª coluna. Portanto, precisamos filtrar “Finanças”.

Código:

 Sub AutoFiltro_Exemplo1 () Intervalo ("A1: E25"). Campo AutoFiltro: = 5, Critérios1: = "Finanças" End Sub 

Então é isso, rode este código manualmente ou através da tecla F5 ele irá filtrar apenas “Finance” da lista.

Exemplo # 2 - Operador em AutoFiltro

Vimos como filtrar o valor único. Agora veremos como filtrar vários elementos. Suponha que junto com “Finanças” você deseja filtrar o departamento de “Vendas” também, então podemos fazer isso usando Operadores.

Passo 1: Após aplicar o primeiro critério no próximo argumento, selecione o operador como “xlOr”.

Código:

 Sub AutoFiltro_Exemplo2 () Intervalo ("A1: E25"). Campo AutoFiltro: = 5, Critérios1: = "Finanças", Operador: = xlOr End Sub 

Passo 2: Agora no Critério 2 mencione o valor como “Vendas”.

Código:

 Sub AutoFiltro_Exemplo2 () Intervalo ("A1: E25"). Campo AutoFiltro: = 5, Critérios1: = "Finanças", Operador: = xlOr, Critérios2: = "Vendas" End Sub 

Step 3: Ok, done run this code using F5 key or manually it will filter out both “Finance” & “Sales”.

In the Operator argument, I have used “xlOr” this will select both “Finance” & “Sales” under the filter.

Example #3 – Filter Numbers using AutoFilter

Using Operator symbol “XlAnd” we can filter out numbers as well. Assume from the Overtime column you want to filter out all the values which are >1000 but <3000.

Step 1: The first thing is changing the Field from 5 to 4.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4 End Sub 

Step 2: Criteria 1 is >1000.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4,Criteria1:=">1000", End Sub 

Step 3: Here we need to match both the criteria so use “xlAnd” as the operator.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4, Criteria1:=">1000", Operator:=xlAnd, End Sub 

Step 4: Criteria 2 will <3000.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4, Criteria1:=">1000", Operator:=xlAnd, Criteria2:="<3000" End Sub 

Now if you run this code manually or through the F5 key, it will filter out all the values from the Overtime column which are >1000 but <3000.

Example #4 – Filter from Different Columns using AutoFilter

In order to filter out data from different columns, we need to use a different process. Assume you want to filter out the “Finance” department and also you want to filter out Salary numbers which are >25000 but <40000.

You can use the below code does that.

Code:

 Sub AutoFilter_Example4()       With Range("A1:E25") .AutoFilter Field:=5, Criteria1:="Finance" .AutoFilter Field:=2, Criteria1:=">25000", Operator:=xlAnd, Criteria2:="<40000"       End With End Sub 

This will filter out two columns.

Run this code using the F5 key or you can run manually.

Things to Remember

  • Try different combinations under Operator to get the knowledge of VBA AutoFilter.
  • If you are not sure what to put in try using the macro recorder.
  • If you want to filter out text values then you need to supply them in double-quotes.
  • Use WITH statement to apply more than one column filter.