Ordenar columnas de mayor a menor en forma secuencial

Necesito una macro para ordenar las columnas iniciando en la columna i de mayor a menor, luego por la columna j de mayor a menor y así sucesivamente hasta la columna V finalizando con la columna w de menor a mayor, adjunto ejemplo

2 respuestas

Respuesta
4

Te paso la macro.

Sub OrdenarDatos()
  Dim j As Long, lr As Long
  Dim sh As Worksheet
  '
  Set sh = Sheets("Grupos")
  lr = sh.Range("A" & Rows.Count).End(3).Row
  '
  With sh.Sort
    .SortFields.Clear
    For j = Columns("I").Column To Columns("V").Column
      . SortFields. Add sh. Range(sh. Cells(2, j), sh. Cells(lr, j)), xlSortOnValues, xlAscending,, xlSortNormal
    Next
    .SetRange Range("A1:W" & lr)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
End Sub

¡Gracias! Brillante como siempre abrazo

[Encan tado de ayudarte, gra cias por tus comentarios.

Respuesta
1

¿Conoce el grabador de macros?

- Vaya al menú "Archivo" --> "Opciones"

- En "Personalizar cinta de opciones" active la casilla "Desarrollador"

Verá que le aparece un nuevo menú "Desarrollador" que tiene un botón llamado "Grabar macro". Pulse el botón. Seleccione el rango que desea ordenar y establezca todas las columnas con su orden. Cuando haya acabado, vaya al menú "Desarrollador" y pulse "Detener grabación".

Ya tiene la macro.

Puede consultar su contenido si va al menú "Desarrollador", pulsa el botón "Macros", selecciona la macro que ha grabado y pulsa "Modificar".

Verá que le ha generado algo parecido a esto:

Sub Macro1()
    Columns("I:W").Select
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("I2:I4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("J2:J4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("K2:K4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("L2:L4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("M2:M4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("N2:N4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("O2:O4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("P2:P4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("Q2:Q4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("R2:R4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("S2:S4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("T2:T4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("U2:U4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("V2:V4"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("W2:W4"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja1").Sort
        .SetRange Range("I1:W4")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas