Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Quitar duplicados VBA

RemoveDuplicates VBA Excel

| Sin comentarios

A partir de Excel 2007 se incorpora  la opción "Quitar duplicados", al igual que otras herramientas disponibles en Excel, esta opción también se puede utilizar por medio de VBA.

 

En VBA el comando correspondiente a la opción "Quitar duplicados" es RemoveDuplicates, veamos como se puede hacer uso de esta opción

Sintaxis de RemoveDuplicates 

 

RemoveDuplicates (Columnas , Encabezado)

 

Columnas: Es el primer parámetro de RemoveDuplicates, es obligatorio, y por medio de este parámetro se puede especificar la o las columnas en base a las cuales de debe considerar la eliminación de los duplicados. 

Si se desea indicar el uso de una columna se puede colocar solo el número correspondiente:

Columns:=2

En cambio si se desea indicar una lista de columnas a ser consideradas se puede utilizar array:

Columns:=Array(1, 2)

En ambos casos los números empleados están función del rango seleccionado, y no en función de la hoja completa. 

Encabezado: Este segundo parámetro es opcional, los valores posibles son:

xlYes; si se usa este parámetro se esta especificando que el rango seleccionado tiene un encabezado en la primera fila

xlNo; este es el parámetro por defecto, y sirve para indicar que el rango seleccionado no tiene encabezado en la primera fila.

xlGuess; esta tercera opción de deja a Excel la capacidad de intentar identificar si existe encabezado o no.

Ejemplo de RemoveDuplicates en VBA

Veamos el siguiente conjunto de datos en los que se aplicará RemoveDuplicates.

Ejemplo RemoveDuplicates VBA

 

Si observamos las tres columnas, notaremos que como existen nombres distintos en todas las filas, no existen duplicados, en cambio si por ejemplo nos fijamos solo en las dos primeras columnas, entonces si existen duplicados como en el caso de la fila 4 y fila 5.

 

Ejemplo de código VBA con RemoveDuplicates 

 

Sub ejemploRemoveDuplicates()

    ult = Cells(Rows.Count, 3).End(xlUp).Row

    ActiveSheet.Range("C3:E" & ult).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes

End Sub

 

En este ejemplo primero empleamos el código de la última fila en VBA  a fin de poder identificar en la siguiente línea hasta donde existen datos a ser considerados en la eliminación de duplicados.

 

Tengamos en cuenta, en relación a RemoveDuplicates en VBA, que la eliminación se hace desde la fila inferior a la superior, por ejemplo en el caso de la fila 4 y 5, la fila que se procede a eliminar es la fila 5. 

 

 

Si por el contrario, en lugar de eliminar una fila, se desea realizar un acción distinta, en esos casos sería útil el siguiente artículo: quitar duplicados en VBA, en el que por medio del uso del For en VBA y Countif en VBA (el equivalente al contar.si) se detectan los elementos duplicados.

 

Otros ejemplos de RemoveDuplicates en VBA 

 

Remover duplicados en base al rango usado en una hoja.

Sub ejemplo2()

ActiveSheet.UsedRange.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes

End Sub

 

En lo personal no suelo emplear el "ejemplo2", debido a que no se tiene un control adecuado del rango a ser considerado en la eliminación. 

Remover duplicados en base a una tabla

Sub ejemplo3()

ActiveSheet.ListObjects("Tabla1").DataBodyRange.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes

End Sub

 

Para poder ejecutar este ejemplo es necesario que exista la "Tabla1", o usar el nombre de tabla sobre el cual se quiera quitar los duplicados. 

 

Deja una respuesta

Los campos requeridos estan marcados con *.