Macro que realice orden personalizado con 5 niveles de ordenamiento

Quisiera una rutina que me permita ordenar un rango de datos (A9:S10000), que me los ordene por niveles de la siguiente forma:

Primero columnaA9:A10000

Segundo columnaB9:B10000

Tercero columnaC9:C10000

Cuarto columnaO9:O10000

Quinto columnaQ9:Q10000

Respuesta
4

Si tus datos tienen encabezado y están en la fila 9, utiliza esta macro:

Sub OrdenarCon()
'Por.Dante Amor
    With ActiveWorkbook.Worksheets("Hoja1").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A10:A10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("B10:B10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("C10:C10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("O10:O10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("Q10:Q10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A9:S10000")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Si no tienen encabezados, entonces:

Sub OrdenarSin()
'Por.Dante Amor
    With ActiveWorkbook.Worksheets("Hoja1").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A9:A10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("B9:B10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("C9:C10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("O9:O10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("Q9:Q10000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A9:S10000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Saludos.Dante Amor

Si es lo que necesitas.

Buenos días,

Muchas gracias buena respuesta, adicionalmente en la columna O yo quiero establecer cuales solo los parámetros de orden, es decir hacer una lista personalizada del orden que quiero, que contiene lo siguiente (BORRADOR, A, B, 0,1,2).

Muchas Gracias.

Esa sería una petición nueva, con todo gusto te ayudo con todas tus peticiones, podrías valorar esta respuesta y crear una nueva pregunta por cada petición.

1 respuesta más de otro experto

Respuesta

realmente muchas gracias!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas