Macro ordenar rangos dinámicos sin afectar totales

Necesito ordenar valores de mayor a menor, el problema es que las filas son variables . Como puedo hacer una macro sin afectar los totales.

Por ejemplo tengo los siguientes datos los cuales ya están ordenados de mayor a menor de acuerdo a los valores de la columna B.

Los datos pueden cambiar ya que las filas no son fijas. Por lo cual, los datos pueden ser:

¿Cómo puedo crear una macro para que ordene de mayor a menor un rango dinámico y sin que ordene los totales?

2 Respuestas

Respuesta
2

Te anexo la macro.

Considera lo siguiente:

Los datos deben empezar en la fila 2. Si empiezan en otra fila, cambia los 2 por el número de fila.

Los encabezados deben estar en la fila 1. Si están en otra fila, cambia el 1 por el número de fila en esta línea

uc = Cells(1, Columns.Count).End(xlToLeft).Column



Sub Ordenar_Rangos()
'
' Por Dante Amor
'
    ini = 2
    fin = 2
    blanco = True
    uc = Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row + 1
        If Cells(i, "A") <> "" Then
            fin = i
            If blanco = True Then
                ini = i
                blanco = False
            End If
        Else
            blanco = True
            With ActiveSheet.Sort
                .SortFields.Clear
                .SortFields.Add Key:=Range("B" & ini & ":B" & fin), _
                    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
                .SetRange Range("A" & ini, Cells(fin, uc))
                .Header = xlGuess
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
        End If
    Next
    MsgBox "Fin"
End Sub

.Sal u dos. Dante Amor. No olvides valorar la respuesta.

Respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas