Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Creación de una Tabla Dinámica - Despachadores de aduanas

| Sin comentarios

Una tabla dinámica es una herramienta útil para poder organizar y analizar información de manera rápida y sencilla. La forma más simple de crearla puede darse desde el menú Insertar y, luego, haciendo clic en el símbolo de la Tabla Dinámica. A través del uso de rangos, se pueden llenar las partes de la tabla y luego ajustar su funcionamiento para encontrar distintos valores (sumas, conteos, etc.)

Asimismo, existe la posibilidad de crearlo usando macros. Gracias a esto, podríamos insertar tablas dinámicas dentro de algún formulario sin tener que repetir el proceso cada vez que se quiera hacerlo. En primer lugar, necesitamos conseguir una base de datos; por ejemplo, la siguiente:

Ranking de Despachadores de Aduana según importación para el consumo 2011

Base de Datos

 

 

 

 

(Para mayor visualización de  la imagen, hacer click en la misma)

Luego, podemos comenzar a crear la macros. Primero, determinemos la variables que la macros utilizará:

Sub CrearTabla()
Dim WSD1 As Worksheet
Dim WSD2 As Worksheet
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim PRange As Range
Dim FinalRow As Long

Luego le damos nombre a las variables:
Set WSD1 = Worksheets("Hoja3")
Set WSD2 = Worksheets("Ranking de despachadores de adu")
FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row
Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 10)

Sheets("Ranking de despachadores de adu").Select
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)

Opcionalmente, podemos optar por borrar cualquier otra tabla dinámica que haya quedado de un ejercicio anterior, por que si deseamos actualizar la tabla que acabamos de hacer, podamos insertarla en el espacio que antes había ocupado esta:
For Each PT In WSD1.PivotTables
PT.TableRange1.Clear
Next PT

A continuación, elegimos la hoja y el rango en esta que proveerá los datos a la tabla dinámica:

Sheets("Ranking de despachadores de adu").Select
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets("Tabla").Range("a1"), TableName:="tabla de despachadores")
PT.Format xlReport5

Actualización de la tabla dinámica si se cree necesario:
PT.ManualUpdate = True
También, colocamos las etiquetas de fila que la tabla tendrá:
PT.AddFields RowFields:=Array("Despachador", "TIPO DE IMPORTACIÓN / DESPACHADOR DE ADUANAS")

Finalmente, colocaremos las columnas que queremos que aparezcan en la tabla (sus características, orden, etc.):
With PT.PivotFields("Valor FOB (US)")
.Orientation = xlDataField
.Function = xlSum
.Position = 1
.NumberFormat = "#,##0"

End With

With PT.PivotFields("Valor CIF (US)")
.Orientation = xlDataField
.Function = xlSum
.Position = 2
.NumberFormat = "#,##0"
End With

With PT.PivotFields("Nro. de DUA's")
.Orientation = xlDataField
.Function = xlSum
.Position = 3
.NumberFormat = "#,##0"
End With

With PT.PivotFields("Peso Neto (Kg)")
.Orientation = xlDataField
.Function = xlSum
.Position = 4
.NumberFormat = "#,##0"
End With
With PT.PivotFields("Peso Bruto (Kg)")
.Orientation = xlDataField
.Function = xlSum
.Position = 5
.NumberFormat = "#,##0"
End With

Y acabamos con una función para regresar a la base de datos que creó la tabla dinámica:
Sheets("Ranking de despachadores de adu").Select
End Sub

tabla dinamica con macros

 

 

(Para mayor visualización de  la imagen, hacer click en la misma)

Deja una respuesta

Los campos requeridos estan marcados con *.