Eliminar valores duplicados de una misma fila

Tengo una bbdd con 9 columnas y 4000 filas.

Cada fila contiene hasta 9 datos, algunos duplicados y otros únicos.

Mi problema es con los duplicados.

En cada fila hay varios duplicados y solo deseo quedarme con 1 y el resto borrar (no eliminar)

Dato 1 Dato 2 Dato 3 Dato 4 Dato 5 Dato 6 Dato 7 Dato 8 Dato 9

15485 15485 11111 222222

88888 11118 88888 333333

1 Respuesta

Respuesta
1

H o l a : Te anexo la macro.

Los datos deberán empezar en la celda A2.

Lo probé con 4000 registros y se tardó 4 segundo, así que no deberás tener problemas de tiempo.

Sub BorrarDuplicados()
'Por.Dante Amor
    Application.ScreenUpdating = False
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        For j = 9 To 1 Step -1
            If Cells(i, j) <> "" And j > 1 Then
                Set b = Range(Cells(i, 1), Cells(i, j - 1)).Find(Cells(i, j), lookat:=xlWhole)
                If Not b Is Nothing Then
                    Cells(i, j) = ""
                End If
            End If
        Next
    Next
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: BorrarDuplicados
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! 

Quedó estupendo.

Hola Dante ... 

Hice un test a la macro y fenomenal. Soportó alrededor de 100 mil celdas ocupadas.

Excelente. 

Será posible que puedas compartir tus conocimientos y describir cada línea de la macro? 

Muy agradecido por el apoyo

Saludos

Anexo un comentario explicando cada línea

Sub BorrarDuplicados()
'Por.Dante Amor
    'desactiva la actualización en pantalla, esto hace más rápido el proceso
    Application.ScreenUpdating = False
    'inicia el ciclo, empezando en la primera fila y terminando en la última fila con datos
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        'inicia el ciclo, empezando en la columna 9 y terminando en la columna 1
        For j = 9 To 1 Step -1
            'Si la celda es diferente de vacío y la columna es mayor a 1, es decir, revisa solamente de la columna 9 a la 2
            If Cells(i, j) <> "" And j > 1 Then
                'busca el valor de la celda en toda la fila
                Set b = Range(Cells(i, 1), Cells(i, j - 1)).Find(Cells(i, j), lookat:=xlWhole)
                If Not b Is Nothing Then
                    'si encuentra el valor, entonces lo borra
                    Cells(i, j) = ""
                End If
            End If
        Next
    Next
   'activa la actualización de la pantalla
    Application.ScreenUpdating = True
   'mensaje en pantalla de fin
    MsgBox "Fin"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas