Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como CREAR un FILTRO AVANZADO con MACRO Excel VBA #530

Realizar Filtro Avanzado con Macro

Realizar Filtro Avanzado con Macro de Excel

En este ejemplo se muestra como crear un filtro Avanzado con Macro de Excel VBA, para el filtrado o búsqueda de datos se utiliza una utilidad que trae Excel incorporada, como es el Filtro Avanzado, en este ejemplo se enseña como crear un filtro avanzado con macro de Excel.

Aprende Excel rápido y fácil, click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentirás.

  
 

Mira la macro en acción, una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con  vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.

Filtro Avanzado con Macros de Excel VBA

Una vez descargado el archivo de Excel utilizado como Ejemplo, se puede observar que en la celda J2 datos por los que es posible filtrar, en este caso se debe seleccionar «Marca» en J1 y en J2 la marca por la que se desea filtrar.

Seleccionada la marca en la celda J2, se ejecuta la macro que realiza un filtro automático en Excel, copiando los datos datos filtrados, de acuerdo a la marca seleccionada, de la hoja 2 a la hoja1.

La macro detecta si se modifica la celda de la columna 10 y fila 2, es decir «J2», una vez seleccionado el dato o marca de producto por la que se desea filtrar, la macro realiza un filtro automático de Excel.

Explicación Paso a Paso del Código para Aplicar Filtro Avanzado con Macro Excel VBA

Primero se crea un objeto con la Hoja1 y Hoja2, con el siguiente código:

Set a = Sheets(«Hoja1»)
Set b = Sheets(«Hoja2»)

Luego se determina la última fila con datos a los efectos de establecer el rango donde ese encuentran los datos en la hoja1, que es donde se pegan los datos filtrados, a los efectos de borrar todos los datos y escribir las celdas con los datos filtrados nuevamente, se usa el código:

ufa = a.Range(«A» & Rows.Count).End(xlUp).Row
If ufa = 1 Then ufa = 2
a.Range(«A2:G» & ufa).Clear

Luego se determina la última fila con datos para formar el rango de datos donde se encuentran los datos a filtrar, se usa el código:

uf = b.Range(«A» & Rows.Count).End(xlUp).Row

Luego se hace objetos con el rango de datos, rango de criterios y rango donde se deben copiar los datos, así:

Set Rng = b.Range(«A1:G» & uf) ‘rango datos
Set d = a.Range(«J1:J2») ‘rango criterios
Set e = a.Range(«A1:G1») ‘rango donde copiar

Por último se aplica el filtro avanzado, con macro, e l código es el siguiente:

Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=d, CopyToRange:=e, Unique:=1

Como se puede observar en el código anterior, se aplica un filtro avanzado, los datos filtrados se copiarán en otro lado diferente de la base de datos, el criterio de filtrado esta dado por el rango J1:J2″,  «J1» es donde se encuentra la palabra «Marca» y J2 «es el dato del cual se quiere obtener los registros existentes»

Código para Ejecutar un Filtro Avanzado con Macro de Excel

Sub Filtrar()
‘*********** by marcrodos **** https://macrosenexcel.com *** https://www.youtube.com/c/programarexcel?sub_confirmation=1 ********
Application.ScreenUpdating = False
Set a = Sheets(«Hoja1»)
Set b = Sheets(«Hoja2»)

ufa = a.Range(«A» & Rows.Count).End(xlUp).Row
If ufa = 1 Then ufa = 2
a.Range(«A2:G» & ufa).Clear

uf = b.Range(«A» & Rows.Count).End(xlUp).Row
Set Rng = b.Range(«A1:G» & uf) ‘rango datos
Set d = a.Range(«J1:J2») ‘rango criterios
Set e = a.Range(«A1:G1») ‘rango donde copiar

Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=d, CopyToRange:=e, Unique:=1

‘ufa = a.Range(«A» & Rows.Count).End(xlUp).Row
‘For x = ufa To 2 Step -1
‘If a.Cells(x, 1) = Empty Then a.Cells(x, 1).EntireRow.Delete
‘Next x

Application.ScreenUpdating = True
End Sub

Sub Borra()
Set d = Sheets(«Hoja1»)
uf = d.Range(«A» & Rows.Count).End(xlUp).Row
If uf = 1 Then uf = 2
d.Range(«A2:H» & uf).Clear
End Sub


Descarga el Libro de Excel del ejemplo Como Realizar un Filtro Avanzado con Excel

Descarga el ejemplo de los siguientes links de descarga el mismo es totalmente gratuito y libre su uso, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
Cuenta Paypal: https://paypal.me/programarexcel
Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

Summary
Author Rating
1star1star1star1star1star
Aggregate Rating
5 based on 1 votes