¿Existe alguna forma de eliminar duplicados en forma horizontal masivamente en excel?

¿Existe alguna forma de eliminar duplicados en excel de forma horizontal?. Tengo un archivo de 800 líneas en el cual tengo que eliminar lo que aparezca duplicado en las columnas naranjas que muestro en la captura de pantalla,

¿Alguno podrá ayudarme?

1 Respuesta

Respuesta
3

Ho la Joaquin y bienvenido a Todoexpertos.

Se pueden eliminar con una macro. Te ayudo con la macro y te explico cómo ejecutarla.

Solamente dime:

Lo que se elimine quieres que se recorran las celdas hacia la izquierda o quieres que queden las celdas en blanco.

Hola Dante, gracias por tu respuesta, que las celdas se recorran hacia la izquierda estaría bien si es posible,

Aguardo tus comentarios

Ejecuta la siguiente macro:

Sub Eliminiar_Duplicados_Horizontal()
'Por Dante Amor
  Dim i As Long, j As Long, k As Long, uf As Long, uc As Long
  Dim dic As Object
  Dim a As Variant, b As Variant
  '
  uf = Range("A" & Rows.Count).End(3).Row
  uc = Cells(1, Columns.Count).End(1).Column
  a = Range("A2", Cells(uf, uc)).Value2
  ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
  '
  Set dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(a, 1)
    dic.RemoveAll
    k = 0
    For j = 1 To UBound(a, 2)
      If Not dic.exists(a(i, j)) Then
        dic(a(i, j)) = Empty
        k = k + 1
        b(i, k) = a(i, j)
      End If
    Next
  Next
  Range("A2").Resize(UBound(a, 1), UBound(a, 2)).Value = b
End Sub

Antes de ejecutar la macro sería conveniente que realizaras un respaldo de tu hoja. Para que al final compares los datos resultantes.


Sigue las Instrucciones para ejecutar la macro

  1. Abre tu archivo 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. Para ejecutarla presiona F5

Hola disculpa que te moleste, ¿podrías compartirme la otra opción? ¿La opción de que lo que se elimina quede en blanco? Ya que al correr las celdas con la opción 1era que me pasaste, se pisaron otras cosas.

Aguardo tu respuesta

Muchas gracias

La macro supone que los datos empiezan en la celda A2, tal como lo pusiste en tu ejemplo.

Si no es así, dime exactamente en cuál celda inician y en cuál celda terminan.

Si quieres blancos, prueba la siguiente:

Sub Eliminiar_Duplicados_Horizontal_v2()
'Por Dante Amor
  Dim i As Long, j As Long, uf As Long, uc As Long
  Dim dic As Object
  Dim a As Variant, b As Variant
  '
  uf = Range("A" & Rows.Count).End(3).Row
  uc = Cells(1, Columns.Count).End(1).Column
  a = Range("A2", Cells(uf, uc)).Value2
  ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
  '
  Set dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(a, 1)
    dic.RemoveAll
    For j = 1 To UBound(a, 2)
      If Not dic.exists(a(i, j)) Then
        dic(a(i, j)) = Empty
        b(i, j) = a(i, j)
      End If
    Next
  Next
  Range("A2").Resize(UBound(a, 1), UBound(a, 2)).Value = b
End Sub

Ah te entiendo, me falto aclarar eso, en el caso de mi archivo empiezan los datos en la celda F2 y finalizan en la AB (La que esta después de la Z).

Finalizan en la AB 868, por si necesitas el numero también

Prueba nuevamente con la siguiente:

Sub Eliminiar_Duplicados_Horizontal_v1()
'Por Dante Amor
  Dim i As Long, j As Long, k As Long, uf As Long
  Dim dic As Object
  Dim a As Variant, b As Variant
  '
  uf = Range("F" & Rows.Count).End(3).Row
  a = Range("F2", Cells(uf, "AB")).Value2
  ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
  '
  Set dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(a, 1)
    dic.RemoveAll
    k = 0
    For j = 1 To UBound(a, 2)
      If Not dic.exists(a(i, j)) Then
        dic(a(i, j)) = Empty
        k = k + 1
        b(i, k) = a(i, j)
      End If
    Next
  Next
  Range("F2").Resize(UBound(a, 1), UBound(a, 2)).Value = b
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas