Es común cuando tenemos una base de datos muy extensa o con muchos campos pueda existir un dato que se repita, dependiendo de las circunstancias. La presente macro fue diseñada en base a las necesidades del usuario sobre dicha base de datos, en la cual permitirá eliminar las filas de datos que hayan sido duplicadas casualmente o por falta de control sobre la misma.
En este ejemplo se explicará detalladamente el funcionamiento de esta macros, para fines prácticos, se utilizará un pequeño listado:
Se tiene una lista de personas que tienen una deuda en el mes de Abril; sin embargo, al no haber control sobre dicha tabla, se introdujo por error las deudas de otros meses de los mismos usuarios, pudiendo ocasionar problemas al momento de facturar el monto final.
Para evitar dichos problemas, se utilizará el siguiente código que permitirá eliminar los datos duplicados, el cual se muestra a continuación:
Se define la variable “fila” como “Long” dado que el número de filas puede variar desde 100 hasta el total de las filas de la hoja activa. Además, la variable “col” se define como “Integer” dado que dicho valor debe ser considerado como valor mas no como texto.
En este caso, se podrá eliminar los duplicados en base al ID o al nombre. En este caso, si se quiere eliminar los duplicados de ID, la aplicación enviará un mensaje indicando el número de columna a la cual se va a evaluar, por lo que primero escogeremos la columna “A”, ósea la columna 1.
Una vez introducido el número de columna a evaluar, se ejecutará la función FOR con el código de búsqueda de filas en la hoja activa, en la cual tiene contenida a la variable “col” para anunciarle al dicho código que busque en la columna indicada. Luego, se ejecutará una condicional junto con el código COUNTIF, que tiene la misma función que la fórmula preestablecida de una hoja en Excel, y se le indica que, si hay un valor igual que el valor anterior indicado, entonces tomará toda esa fila y la eliminará.
Finalmente, se obtendrá lo deseado, que es la eliminación de datos duplicados en Excel.
Ahora, si se desea realizar la eliminación de duplicados por nombres, solamente se cambia el número de columna a evaluar y se ejecuta el programa.
Se observa que los datos duplicados de los nombres ha sido removido.
Link de descarga del código: Quitar duplicados en VBA
13/03/2018 a las 11:59 am
consulta. Si quiero tener el valor más nuevo, en lugar del primer valor. Como modifico este codigo vba?
Muchas gracias!!
Slds.
01/03/2021 a las 11:22 pm
Hola Haroldo
Para lograrlo se debe ordenar primero los datos antes de ejecutar la eliminación (siempre se realiza la eliminación de abajo hacia arriba)
03/09/2019 a las 8:44 am
Estupenda publicacion .
quizas me podais ayudar
Y si quiero eliminar pero en function de dos condiciones en columnas diferentes ?
Dos filas tienen el mismo dato en una columna pero en otra columna otro diferente
columna a= Nombre
columna B= apellido
Solo quiero que se eliminen los que sean mismo nombre y mismo apellido
01/03/2021 a las 11:23 pm
Hola Javier
Puedes usar un código como https://www.excel-avanzado.com/39728/removeduplicates-vba-excel.html.
08/05/2020 a las 3:01 pm
BUENAS TARDES COMO HAGO SI CUANDO CREO UNA BASE DE DATOS EN EXCEL Y CREO UN FORMULARIO QUIERO QUE MANDE UN MENSAJE S,SI AL INGRESAR UN NUMERO DE DOCUMENTO YA SE ENCUENTRA EN LA BASE DE DATOS
01/03/2021 a las 11:25 pm
Hola Francisco
En base al ejemplo mostrado debes cambiar la instrucción que se encuentra dentro del if por el envío del mensaje,
18/02/2021 a las 2:52 pm
Con esta macro, que parametro tengo que modificar para que me elimine el registro mas viejo ya que al agregar uno nuevo y detecta que esta duplicado elimina el nuevo y no el viejo
01/03/2021 a las 11:26 pm
Hola Hector
Debes tener en cuenta que siempre se eliminan los registros que estan en la parte inferior, por lo que debes tener un ordenamiento donde aparezca primero los registros que deseas que se conserven
20/02/2021 a las 12:37 pm
buenas tardes
excelente código, pero tengo una duda....borra la siguiente fila repetida, pero si queremos dejar estar y borrar la anterior?
un saludo
01/03/2021 a las 11:29 pm
Hola Manuel
Ten en cuenta que las rutinas de eliminación de datos siempre eliminan los registros desde la parte inferior a la superior, ... debido a que cuando se elimina una fila los datos suben una fila