Lección 17: Eliminar duplicados en Excel. Comando AdvancedFilter Unique.

Escrito por Administrador

9 de septiembre de 2021

En esta lección vas a aprender a eliminar rápidamente los duplicados de una columna en Excel, utilizando una de sus funciones. Este tema va a ser más cortito de lo habitual, pero merece la pena tratar el tema individualmente debido a su importancia.

Antes de que te pongas a programar como un loco bucles FOR para resolver este problema, vamos a aprender un método sencillo para filtrar de un listado aquellos elementos únicos, descartando las repeticiones de los mismos.

Si, por ejemplo, tenemos el siguiente listado:

vegetariano, carnívoro, omnívoro, vegetariano, omnívoro, vegetariano

y queremos obtener:

vegetariano, carnívoro, omnívoro (los componentes únicos del listado)

Usaríamos AdvancedFilter Unique.

¿Cómo? Pues de la siguiente manera.

Rango.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Destino, Unique:=True

  • Rango: Es el rango del listado a filtrar.
  • Destino: Celda inicial del rango donde queremos pegar el resultado del filtro.

 

Vamos a ver como lo utilizaríamos con un ejemplo práctico.

Crea un libro nuevo, abre el editor VBA e inserta tres módulos. Copia en ellos las siguientes macros.

 

Macro 1. Extraer los elementos no repetidos y ordenarlos alfabéticamente.

Sub Leccion17_1()

'Macro que extrae del listado ANIMALES los elementos únicos y los ordena por orden alfabético

'Borramos la columna E por si contiene algun dato

Range("E:E").ClearContents         

Range("B:B").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("E1"), Unique:=True

Range("E1:E12").Sort Key1:=Range("E:E"), Order1:=xlAscending, Header:=xlYes

End Sub

Macro 2. Extraer las fechas no repetidas y ordenarlas alfabéticamente.

Sub Leccion17_2()

'Macro que extrae del listado FECHAS los elementos únicos y los ordena por orden alfabético

'Borramos la columna F por si contiene algun dato

Range("F:F").ClearContents         

Range("C:C").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("F1"), Unique:=True

Range("F1:F12").Sort Key1:=Range("F:F"), Order1:=xlAscending, Header:=xlYes

End Sub

Macro 3. Restablecer la hoja de cálculo.

Sub Leccion17_3()

'Macro que restablece la hoja de cálculo

'Borramos los datos de la columna E

Range("E:E").ClearContents     

'Borramos los datos de la columna F   

Range("F:F").ClearContents         

End Sub

A continuación, rellenamos la hoja igual que en la figura adjunta. Para ello también crearemos 3 botones y les asociaremos las macros anteriores.

total-operaciones-matematicas-macros

Cuando ejecutamos la primera de las macros, filtramos lo elementos únicos del listado animales y luego ordenamos la lista resultante por orden alfabético.

Range("B:B").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("E1"), Unique:=True

Con este comando, lo que hemos dicho es: filtra todos los elementos de la columna B y copia sólo los elementos únicos a partir de la celda E1.

Range("E1:E12").Sort Key1:=Range("E:E"), Order1:=xlAscending, Header:=xlYes

Como aprendimos en la lección 10, vamos a ordenar automáticamente los resultados mediante macros. Nótese que en el comando hemos incluido en el rango la celda E1 que es un título o encabezado. Para que el comando lo sepa y no lo incluya dentro de los elementos a ordenar, señalamos al final del comando Header:=xlYes.

Como vemos en la siguiente figura, en la columna E nos aparecen los animales únicos, es decir, no repetidos.

total-operaciones-matematicas-macros

La segunda de las macros es igual que la primera, pero trabaja con fechas. De igual manera, va a filtrar los elementos de la columna C, y nos va a copiar a partir de la celda F1 los valores de fecha únicos.

Range("C:C").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("F1"), Unique:=True

Posteriormente los ordena por fecha:

Range("F1:F12").Sort Key1:=Range("F:F"), Order1:=xlAscending, Header:=xlYes  

El resultado será:

total-operaciones-matematicas-macros

La tercera macro sirve para restablecer la hoja de cálculo y volver a ejecutar las macros si así se desea.

Con esto llegamos al final de la decimoséptima lección, en la que has aprendido a eliminar duplicados de una columna en Excel.

Espero que te esté gustando el curso y que me plantees cualquier duda que te surja. También puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos. Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L16. Función FOR en VBA.

L18. Función GoTo en VBA. »

Por favor, ayúdame y haz clic en el anuncio. Solo te lleva un segundo 😉

 


0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto