Macro para ordenar campo de tabla dinámica

¿Cuál seria la macro necesaria para odenar un campo de una tabla dinámica?

Mi ejemplo es el siguiente: Tabla dinámica en Rango A8:Mxxxxxxx. Columna A son fechas que previamente son filtradas por las que me interesen.

Columna C son números que es lo que me interesa ordenar con la Macro en orden Ascendente.

1 respuesta

Respuesta
1

[Hola Cristina. Esta macro hace lo que necesitas con números y fechas. Ponla en un módulo.

Sub OrdenarColumnas()
Dim i As Double
fin = Application.CountA(Worksheets("Hoja1").Range("1:1"))
For i = 1 To fin
If Application.WorksheetFunction.IsEven(i) Then
Range(Cells(1, i), Cells(1, i).End(xlDown)).Select
Selection.AutoFilter
Range(Cells(1, i), Cells(1, i).End(xlDown)).Sort Key1:=Cells(1, i), Order1:=xlDescending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Else
Range(Cells(1, i), Cells(1, i).End(xlDown)).Select
Selection.AutoFilter
Range(Cells(1, i), Cells(1, i).End(xlDown)).Sort Key1:=Cells(1, i), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End If
Next
End Sub

Salu2 Carlos Arrocha

Hola Carlos,

Muchísimas gracias por tu rápida respuesta.

La macro la he puesto pero no me funciona.

Mi caso es el siguiente:

Primero hago un filtro de una condición en mi tabla dinámica para que me muestra los datos de una fecha en concreto( columna "A" de la TD"). Ejecuto una macro "Actualizar tabla dinámica" y luego lo que quiero es ejecutar otra macro que me ordene en orden descendente la columna "B" de esa tabla dinámica.

El rango de mi tabla va desde A8:Mxxxx donde la fila 8 son los títulos d las tabla dinámica

[Hola Cristina. Prueba con esta macro. Tienes que cambiar un par de cosas en el código. Donde pone "Tabla1" lo cambias por el nombre de tu tabla. Y donde pone "Company" pones el nombre de encabezado de la columna, tal como esta. Espero que te sirva.

Sub Ordenar()
ActiveWorkbook. Worksheets("Hoja1"). ListObjects("Tabla1"). Sort. SortFields. Clear
ActiveWorkbook. Worksheets("Hoja1"). ListObjects("Tabla1"). Sort. SortFields.Add _
Key:=Range("Tabla1[[#All],[Company]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja1").ListObjects("Tabla1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Hola de nuevo.

la hoja donde está la tabla dinámica se llama TD(1)

mi tabla dinámica se llama : Tabladinamica3(2)

y el campo a ordenar se llama:Nº Days since B&Q(3).

Entiendo que tengo que sustituir

Hoja1 por (1)

Tabla1 por (2)

Company por (3)

Pero la duda es que una vez que sustituyo eso le quito las comillas a hoja1,tabla1, Company?

No, no le quites, solo sustituye el contenido que esta dentro.

Hola Carlos,

No me funciona. Me da Error.Te puedo mandar el fichero de alguna manera?

Muchísimas gracias por todo

[Hola Cristina. La verdad es que me encantaría poder ayudarte, pero mis conocimientos en este tema son muy limitados y no creo que pueda hacer mucho más.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas