
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
























