Como ordenar varias tablas en una hoja de excel según 2 columnas

Tengo varias tablas en una misma hoja con datos que cambian cada día. ¿Cómo puedo ordenar cada una según la Columna A (de menor a mayor) y luego por la Columna M (de mayor a menor)?

¿Hay alguna formula que me permita ordenar todas las tablas de una sola vez con estos criterios? O de ser posible una macro con botón para cada tabla. Ej. Tabla1

1 respuesta

Respuesta
-1

Prueba con esta macro, te hace un ordenamiento por la primera y ultima columna, respetando los títulos.

Sub ORDENAR_COLUMNAS()
With Range("A2").CurrentRegion
    COL = .Columns.Count
    .Sort _
    KEY1:=Range(.Columns(1).Address), ORDER1:=xlAscending, _
    KEY2:=Range(.Columns(COL).Address), ORDER1:=xlAscending, _
    Header:=xlYes
End With
End Sub

¿Como podría adaptar esta macro para las tablas de abajo también? Solo hay un encabezado por columna para todas las tablas, como en la imagen.  Cada tabla comienza con el encabezado LUGAR y los datos de cada una son independientes:

Muchas gracias!

¿Cuántas tablas son en total?

Son 23

Se podría una macro que ordene los datos al seleccionar las celdas de cada tabla? 

Esta macro recorre cada tabla y hace el ordenamiento ascendente por la 1a y la ultima columna

Sub ORDENAR_TABLAS()
FILAS = Range("A" & Rows.Count).End(xlUp).Row
COL = Range("A1").CurrentRegion.Columns.Count
Set DATOS = Range("A1").Resize(FILAS, COL)
With DATOS
    CUENTA = WorksheetFunction.CountBlank(.Columns(2))
    For I = 1 To CUENTA + 1
    If I = 1 Then
        Set TABLA2 = .CurrentRegion
        With TABLA2
            FILAS = .Rows.Count
            Set TABLA2 = .Rows(3).Resize(FILAS - 2)
        End With
    Else
        Set TABLA2 = TABLA2.Columns(2).End(xlDown).Offset(2, 0).CurrentRegion
        With TABLA2
            FILAS = .Rows.Count
            Set TABLA2 = .Rows(2).Resize(FILAS - 1)
        End With
    End If
        With TABLA2
            .Sort _
                KEY1:=Range(.Columns(1).Address), ORDER1:=xlAscending, _
                KEY2:=Range(.Columns(COL).Address), ORDER1:=xlAscending
        End With
    Next I
End With
Set DATOS = Nothing: Set TABLA2 = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas