Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como Obtener REGISTROS UNICOS de Una Columna FILTRO AVANZADO en Excel VBA #529

Filtro avanzado con macro Filtro registros unicos

Autofiltro Avanzado con Macro – Filtrar Registros Unicos

En este post se muestra como crear un Filtro Avanzado con macro procediendo a filtrar solamente los datos únicos de una columna, es similar a seleccionar en el menú de Excel, Filtro Avanzado, en este caso lo hace a través de una macro-

Se el mejor manejando Excel, hazlo en forma fácil y sencilla, 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 – Filtrar registros sin duplicados

En este ejemplo utilizando código de VBA se procede a realizar un Filtro Avanzado, extrayendo y mostrando solamente los datos únicos, la macro filtra la celda determinada, establece cuales son los registros únicos y los mismos son mostrados en la hoja de Excel.

El Filtro avanzado creado con macro de Excel VBA, filtra los datos seleccionados, copiando los mismos a la hoja dos, no realiza un filtro en el lugar, sino que copia a otra hoja.

Explicación del código para crear Filtro Avanzado y Extraer Solo Datos Unicos

Para crear el Filtro Avanzado con macros, primero se crea un objeto con la hoja 1 que es donde se mostrarán los datos filtrados y con la hoja 2 que es donde están los datos a filtrar, se utiliza el siguiente código

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

Se determina la última fila con datos, en la hoja donde se encuentran los datos a filtrar y se crea el objeto «Rng» que contine el rango a filtrar, se usa el siguiente código:

uf = b.Range(«A» & Rows.Count).End(xlUp).Row
Set Rng = b.Range(«D2:D» & uf)

Luego se limpia la hoja y rango donde se copiarán los datos para que no provoque problemas, con el siguiente código:

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

Luego se con el siguiente código  aplica un Filtro Avanzado al rango seleccionado, copiando los datos filtrados a otro rango, que en este ejemplo se encuentra en la hoja1, se usa el siguiente código:

Rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=a.Range(«A2»), Unique:=1

Notese que en el código anterior, que el Filtro Avanzado creado con macro no contiene ningún criterio de filtrado, estableciendo que los datos a filtrar son los datos únicos por eso «Unique» = 1, también se puede escribir «True» en vez de 1.

Descarga el Libro Extraer Registros Unicos con Filtro Avanzado con Macro

Al final del post encontrarás el link para descargar este ejemplo, 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.

Código para Crear Filtro Avanzado con Macro de Excel VBA

Sub RegistrosUnicos()
‘*********** 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»)
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
Set Rng = b.Range(«D2:D» & uf)

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

Rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=a.Range(«A2»), 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

MsgBox («Los datos se extrajeron con éxito»), vbInformation, «https://macrosenexcel.com»
Application.ScreenUpdating = False
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


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
no rating based on 0 votes