Saltar al contenido

Ordenar automáticamente tabla


Recommended Posts

publicado

Hola,

Quiero ordenar automáticamente los datos en una tabla, de forma que al ingresar los datos en una fila los datos se organicen según un criterio (fecha) al ingresar los datos en la última celda del rango o al teclear intro.

Lo he intentado con este código:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 4 Then
            With Range("A:D")
            .Sort key1:=.Cells(1, 1), Header:=xlYes
        End With
    End If
End Sub

Pero solo sirve para rangos normales, no para tablas dinámicas.

¿Alguien me puede sugerir algo similar?

Gracias.

tabla_dinámica.xlsm

publicado

Hola

Al convertir el rango en "Tabla" (ojo, tabla, no tabla dinámica que es otra cosa), la forma en que hay que hacer referencia al "nuevo" objeto es distinta:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 4 Then
    With ListObjects(1)
        .Range.Sort key1:=.ListColumns(1), order1:=xlAscending, _
            Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    End With
End If

End Sub

Saludos

Abraham Valencia

publicado

Hola nuevamente

En VBA el objeto tabla es un "ListObject", al ser la única tabla en la hoja su índice es 1, por ende es:

ListObjects(1)

Aunque también podría usarse:

ListObjects("Tabla1")

Ya que ese es su nombre. Los de ListColumns(1) solo hace referencia a la primera columna de la tabla, o sea, la columna en donde están tus fechas (columna A).

Espero se haya entendido.

Abraham Valencia

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.