Macro para ordenar Horizontalmente eliminando duplicados

Estoy atorado con un problema en Excel... Tengo una base de datos numérica y necesito ordenar y quitar duplicados pero de forma horizontal... Lo puedo hacer de forma manual, pero así solo se pude hacer renglón por renglón y es muy tardado, quisiera ver si hay una forma de automatizarlo con una macro.

1 respuesta

Respuesta
2

Puedes poner un par de imágenes explicando lo que necesitas. En la primera imagen pon tus datos originales, en la segunda imagen pon el resultado esperado. Explica con los datos de la imagen qué datos deben ser ordenado o eliminados.

Nota: Para poner una imagen presiona el icono de Añadir imagen que se encuentra en la barra

En al primer Imagen seria la información original y en la segunda como la necesito. Gracias

Antes de ejecutar la macro crea una hoja llamada "Hoja5" para poner los resultados.

Cambia en la macro "Hoja4" por el nombre de tu hoja con los datos originales.

El resultado quedará en la hoja "Hoja5"

Sub Ordenar_Unicos()
'Por Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja4") 'hoja con datos original
    Set h2 = Sheets("Hoja5") 'hoja con resultado
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column
    h2.Cells.Clear
    h1.Rows(1).Copy h2.Rows(1)
    For i = 2 To u
        h1.Range(h1.Cells(i, "A"), h1.Cells(i, uc)).Copy
        h2.Range("A" & u + 2).PasteSpecial Paste:=xlPasteAll, Transpose:=True
        u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
        h2.Range("A" & u + 2 & ":A" & u2).RemoveDuplicates Columns:=1, Header:=xlYes
        With h2.Sort
            .SortFields.Clear
            .SortFields.Add Key:=h2.Range("A" & u + 3), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
            .SetRange h2.Range("A" & u + 3 & ":A" & u2)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        h2.Range("A" & u + 2 & ":A" & u2).Copy
        h2.Range("A" & i).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    Next
    h2.Range("A" & u + 2 & ":A" & u2).Clear
    Application.CutCopyMode = False
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: Ordenar_Unicos
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas