Ordenar por macro filas según criterios

Tengo este código que permite ordenar las filas según los criterios mencionados, esto lo obtuve grabando una macro:

Sub OrdenarFilas()
'
    ActiveWorkbook.Worksheets("Reportes").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Reportes").Sort.SortFields.Add Key:=Range( _
        "B4:B1000000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Reportes").Sort.SortFields.Add Key:=Range( _
        "D4:D1000000"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "rector, presidente, director general, vicerrector, vicepresidente, decano, secretario general", _
        DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Reportes").Sort.SortFields.Add Key:=Range( _
        "F4:F1000000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Reportes").Sort.SortFields.Add Key:=Range( _
        "H4:H1000000"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Reportes").Sort
        .SetRange Range("A3:Q1000000")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    'MsgBox "Datos ordenados", vbInformation
End Sub

La consulta es como haría para que esta macro corra al ser ejecutada desde otra hoja la cual no almacena los datos?

2 Respuestas

Respuesta
-1

Pues la manera más chévere para desarrollarla es que interactue la hoja con una Base de datos puede ser Access y mediante una consulta SQL traer los datos ordenados

Respuesta
1

Te anexo la macro actualizad

Sub OrdenarFilas()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Set h = Sheets("Reportes")
    ub = h.Range("B" & Rows.Count).End(xlUp).Row
    ud = h.Range("D" & Rows.Count).End(xlUp).Row
    uf = h.Range("F" & Rows.Count).End(xlUp).Row
    uh = h.Range("H" & Rows.Count).End(xlUp).Row
    u = WorksheetFunction.Max(ub, ud, uf, uh)
    With h.Sort
        .SortFields.Clear
        .SortFields.Add Key:=h.Range("B4:B" & u), SortOn:=xlSortOnValues, _
            Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=h.Range("D4:D" & u), SortOn:=xlSortOnValues, _
            Order:=xlAscending, _
            CustomOrder:="rector, presidente, director general, vicerrector, vicepresidente, decano, secretario general", _
            DataOption:=xlSortNormal
        .SortFields.Add Key:=h.Range("F4:F" & u), SortOn:=xlSortOnValues, _
            Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add Key:=h.Range("H4:H" & u), SortOn:=xlSortOnValues, _
            Order:=xlDescending, DataOption:=xlSortNormal
        .SetRange h.Range("A3:Q" & u)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    MsgBox "Datos ordenados", vbInformation
End Sub

Puedes ejecutar la macro desde cualquier hoja y siempre ordenará la hoja "Reportes"

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas