Excel Avanzado

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

Excel Avanzado
Logo Excel Avanzado

Quitar duplicados en VBA

| 10 comentarios

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.

1 5 300x156 Quitar duplicados en VBA

Para evitar dichos problemas, se utilizará el siguiente código que permitirá eliminar los datos duplicados, el cual se muestra a continuación:

2 5 Quitar duplicados en VBA

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.

3 3 Quitar duplicados en VBA

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

4 2 300x156 Quitar duplicados en VBA

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.

5 2 Quitar duplicados en VBA 6 2 300x156 Quitar duplicados en VBA

Se observa que los datos duplicados de los nombres ha sido removido.

Link de descarga del código: Quitar duplicados en VBA

10 comentarios

  1. consulta. Si quiero tener el valor más nuevo, en lugar del primer valor. Como modifico este codigo vba?

    Muchas gracias!!

    Slds.

    • 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)

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

    • Hola Javier
      Puedes usar un código como https://www.excel-avanzado.com/39728/removeduplicates-vba-excel.html.

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

    • Hola Francisco
      En base al ejemplo mostrado debes cambiar la instrucción que se encuentra dentro del if por el envío del mensaje,

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

    • 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

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

    • 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

Deja una respuesta

Los campos requeridos estan marcados con *.