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 VBASuponga 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.