Skip to content

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