Macro para aplicar filtro en una fila indeterminada

Necesito una macro que aplique un filtro en una fila que puede ser variable. Muestro ejemplo

Las celdas A1: F3 tienen datos así como las A6:F8

      A     B     C     D    E     F

1  GB   12 .........................

2  KL   25...........................

3  LM   36..........................

4  

5

6  AB   36........................

7  RB   52........................

8  ZL   53.........................

Lo que quiero es aplicar un filtro para la matriz A6:F8 que me ordene las filas según orden descendiente alfabético de Z a A.

El detalle es que esa segunda matriz puede estar a cuaquier altura de fila en la hoja

1

1 respuesta

Respuesta
1

H o l a:

Lo que necesitas es que se ordene por la columna A, ¿sin importar las filas vacías que existan?

Prueba con la siguiente macro y me comentas si es lo que necesitas:

Sub Ordenar()
'Por.Dante Amor
    u = Range("A" & Rows.Count).End(xlUp).Row
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A1"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .SetRange Range("A1:F10")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

':)
S a l u d o s . D a n t e   A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

Necesito que ordene por la columna A pero solo a partir de la fila 6. Pero no siempre es la fila 6. Para eso necesito que en Key:=Range("A1") sea relativo. con una variable que dependa de la fila donde no hay datos en este caso la fila 5

Prueba con la siguiente macro:

Sub Ordenar()
'Por.Dante Amor
    u = Range("A" & Rows.Count).End(xlUp).Row
    blancoencontrado = False
    fila = 1
    For i = 1 To u
        If Cells(i, "A") = "" Then
            blancoencontrado = True
        Else
            If blancoencontrado Then
                fila = i
                Exit For
            End If
        End If
    Next
    '
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A" & fila), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .SetRange Range("A" & fila & ":F" & u)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

':)
S a l u d o s . D a n t e   A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas