Ordenar con un orden repetido, no de menor a mayor, en Excel

Tenemos una tabla, con un identificador delante generado a partir de unas operaciones matemáticas, que comprende entre un rango de 1 al 9. Pongamos que el orden es este:
1,2,3,1,2,3,1,2,3,1,2,3,4,5,6,4,5,6,4,5,6,4,5,6,7,8,9.
Ahora estoy intentando ordenar mediante "Ordenar y filtrar" para que me quede:
1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,7,8,9.
Pero no se como hacerlo para que NO me salga así:
1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,etc
¿Se les ocurre alguna solución no manual?

2 respuestas

Respuesta
2

Disculpa, pero no me quedan claras cuáles serían las secuencias o las reglas para ordenar.

En tu ejemplo tienes 3 veces 1,2,3,4,5,6 con este ejemplo no puedo determinar cuál va primero, cuál en medio y cuál al final.

Prueba con la siguiente macro. La macro ordena según el ejemplo que pusiste, pero si existe otra variante, tendría que ajustar la macro.

Sub acomodar()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    c1 = "B"
    c2 = "C"
    '
    h2.Cells.Clear
    h1.Columns(c2).Clear
    '
    For i = 2 To h1.Range(c1 & Rows.Count).End(xlUp).Row
        For j = 1 To h2.Cells(2, Columns.Count).End(xlToLeft).Column + 1
            num = h1.Cells(i, c1)
            Set b = h2.Columns(j).Find(h1.Cells(i, c1), LookAt:=xlWhole)
            If b Is Nothing Then
                u = h2.Cells(Rows.Count, j).End(xlUp).Row + 1
                h2.Cells(u, j) = h1.Cells(i, c1)
                Exit For
            End If
        Next
    Next
    '
    k = 2
    For j = h2.Cells(2, Columns.Count).End(xlToLeft).Column To 1 Step -1
        With h2.Sort
         .SortFields.Clear: .SortFields.Add Key:=h2.Cells(1, j)
         .SetRange h2.Range(h2.Cells(1, j), h2.Cells(10, j)): .Header = xlNo: .Apply
        End With
        '
        For i = 1 To h2.Cells(Rows.Count, j).End(xlUp).Row
            h1.Cells(k, c2) = h2.Cells(i, j)
            k = k + 1
        Next
    Next
End Sub

Cambia en la macro "hoja1" por el nombre de la hoja que tiene tus datos.

Crea una nueva hoja y que lleve por nombre "hoja2", la hoja2 la utiliza la macro para realizar los ordenamientos.

Cambia en la macro "B" por la columna en donde tienes tus números

Cambia en la macro "C" por la columna en donde quieres los resultados.


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

Respuesta
1

Me he inventado un método yo solo, es un apaño.
Lo he ordenado la tabla con los números de manera que me ha quedado: 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4, etc
Luego, he cogido los unos, y a cada uno le he sumado 6 respecto al anterior, luego lo mismo con el dos, empezando por el dos, así que me queda otro identificador con esta forma:
1,7,13,21,   2,8,14,22,  3, 9, 15, 23,  4, 10, 16, 24, etc etc
Luego he ordenado este re-ordenado este nuevo identificador, así que me ha quedado los números de este nuevo bien ordenado, y del otro con la forma:
1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6.
Ta-da! Si conocen una forma mas rápida hacedme-la saber

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas