Autofiltro de VBA

Autofiltro de Excel VBA

AutoFilter en VBA se usa como expresión y la sintaxis para él es la siguiente Expresión. Autofiltro (Campo, Criterio 1, Operador, Criterio 2, Desplegable) todos los argumentos son opcionales. El filtro es útil para filtrar los datos particulares de los grandes datos.

Si eres un usuario habitual, los filtros de Excel no son algo extraño para ti. Algunas de las herramientas que usamos en la hoja de trabajo también están integradas en VBA y la opción de filtro automático es una de las herramientas importantes disponibles en VBA. Como todos sabemos, el filtro de Excel está disponible en la pestaña de datos.

Usando esta opción de filtro podemos jugar con los datos. Si está tratando con una cantidad mínima de datos y cree que la opción de filtro automático de VBA no es realmente necesaria, puede continuar usando la opción de filtro de hoja de trabajo.

Si trabaja con una gran cantidad de datos, puede utilizar una opción de Autofiltro para simplificar el flujo del proceso.

Sintaxis de la función de autofiltro

AutoFilter en Excel VBA se puede usar con un objeto de rango. Como nuestras otras funciones, esta también tiene su propia sintaxis.

  • Rango: el rango es simplemente en qué rango le gustaría aplicar el filtro.
  • Campo: campo significa de qué columna del rango ha seleccionado desea filtrar los datos. Una columna se contará de izquierda a derecha.

Por ejemplo, si su rango es de A1 a D100 y desea aplicar un filtro para la columna D, entonces su número de campo es 4 porque en el rango seleccionado D es la cuarta columna.

Criterio 1: en el campo, ha seleccionado lo que desea filtrar.

  • Operador: si desea aplicar más de un criterio para filtrar los datos, entonces necesitamos usar símbolos de operador. Algunos de los códigos de operador son los siguientes.

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

Criterio 2: ¿Qué es lo segundo que desea filtrar junto con el Criterio 1?

  • Desplegable visible: ¿Desea mostrar el ícono de filtro hacia abajo en la columna filtrada? Si desea mostrar VERDADERO es el argumento, si no es FALSO es el argumento.

¿Cómo aplicar el filtro usando VBA Autofilter? (con ejemplo)

Puede descargar esta plantilla de autofiltro de VBA aquí - Plantilla de autofiltro de VBA

Suponga a continuación los datos en los que está trabajando.

Ahora, al usar el código VBA, aplicaremos el filtro. Siga los pasos a continuación para aplicar el filtro.

Paso 1: Inicie el subprocedimiento dando un nombre a la macro.

Código:

 Sub AutoFilter_Example1 () End Sub 

Paso 2: Lo primero  es en qué rango debemos aplicar el filtro. En este caso, debemos aplicar el rango desde el rango A1 hasta E25.

Código:

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

Paso 3: Una vez que se ha seleccionado el rango, ahora aplique la opción de autofiltro.

Código:

 Sub AutoFilter_Example1 () Rango ("A1: E25"). Autofiltro End Sub 

No estamos seleccionando ningún valor usando un autofiltro, sino que solo estamos aplicando el filtro en este momento.

Ejecute el código usando la tecla F5 o manualmente insertará el filtro para el rango seleccionado.

Entonces ha aplicado un filtro a los datos. Ahora veremos cómo filtrar los datos.

Ejemplo n. ° 1: filtrar datos mediante autofiltro

Considere los mismos datos del ejemplo anterior. Ahora tenemos que filtrar el departamento "Finanzas" de la columna del departamento.

Paso 1: Después de que se haya aplicado el filtro, el primer argumento es mencionar de qué columna estamos filtrando los datos. En este caso, necesitamos filtrar los datos de la columna Departamento, por lo que el número de columna es 5.

Código:

 Sub AutoFilter_Example1 () Rango ("A1: E25"). Campo de autofiltro: = 5, End Sub 

Paso 2: El criterio 1 no es más que lo que queremos filtrar de la quinta columna. Por lo tanto, debemos filtrar "Finanzas".

Código:

 Sub Autofiltro_Ejemplo1 () Rango ("A1: E25"). Campo de autofiltro: = 5, Criterio1: = "Finanzas" End Sub 

Entonces eso es todo, ejecute este código manualmente o mediante la tecla F5, filtrará solo "Finanzas" de la lista.

Ejemplo # 2 - Operador en Autofiltro

Hemos visto cómo filtrar el valor único. Ahora veremos cómo filtrar varios elementos. Supongamos que, junto con "Finanzas", también desea filtrar el departamento de "Ventas", para que podamos hacerlo mediante el uso de Operadores.

Paso 1: Después de aplicar el primer criterio en el siguiente argumento, seleccione el operador como "xlOr".

Código:

 Sub Autofiltro_Ejemplo2 () Rango ("A1: E25"). Campo de autofiltro: = 5, Criterio1: = "Finanzas", Operador: = xlO Fin Sub 

Paso 2: Ahora en Criterios 2 mencione el valor como "Ventas".

Código:

 Sub Autofilter_Ejemplo2 () Rango ("A1: E25"). Campo de autofiltro: = 5, Criterio1: = "Finanzas", Operador: = xlOr, Criterio2: = "Ventas" End Sub 

Paso 3: Ok, ejecute este código usando la tecla F5 o manualmente filtrará tanto "Finanzas" como "Ventas".

En el argumento Operador, he usado "xlOr", esto seleccionará tanto "Finanzas" como "Ventas" bajo el filtro.

Ejemplo # 3 - Filtrar números usando Autofiltro

Usando el símbolo de operador "XlAnd" podemos filtrar los números también. Suponga que en la columna de horas extraordinarias desea filtrar todos los valores que son> 1000 pero <3000.

Paso 1: Lo primero  es cambiar el campo de 5 a 4.

Código:

 Sub AutoFilter_Example3 () Rango ("A1: E25"). Campo de autofiltro: = 4 End Sub 

Paso 2: el criterio 1 es> 1000.

Código:

 Sub AutoFilter_Example3 () Rango ("A1: E25"). Campo de autofiltro: = 4, Criterio1: = "> 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.