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

excel-eliminar-duplicados

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. »

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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

Quizá te interese,

Contacto