Excel Avanzado

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

Excel Avanzado

Creación de tabla dinámica para calcular las ventas de vehículos por zonas

| 1 comentario

Las tablas dinámicas son una herramienta muy útil que se encarga de organizar y resumir de una manera más concisa y ordenada cierta información contenida en una base de datos.

El siguiente ejemplo creará una tabla dinámica en la "Hoja2"; la información(la base de datos) se encontrará en la "Hoja1".Imagen1Tarea4

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

Esta base de datos nos muestra el código del vehículo, su nombre, el departamento de la venta y la zona de dicho departamento, junto con la cantidad y el monto.

A continuación, se creará una macro que cree una tabla dinámica, la cual resuma las ventas de los diferentes vehículos por zonas. Por ejemplo, cuál fue el monto que se obtuvo al vender automóviles en el sur, o cuánto se obtuvo por las camionetas vendidas en el centro.

La tabla que se desa obtener es la sgte.:

Imagen2Tarea4

Para poder obtener la tabla dinámica mostrada se utilizará la sgte. macro:

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

'Definir la hoja de trabajo donde se creará la tabla dinámica
Set WSD1 = Worksheets("Hoja2")

'Hay que eliminar cualquier tabla dinámica de la hoja que puede estar en el mismo lugar.
For Each PT In WSD1.PivotTables
PT.TableRange2.Clear
Next PT

'Hay que definir nuestra área de entrada y establecer un caché dinamico
Set WSD2 = Worksheets("Hoja1")
FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row
Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 6)

'Indicamos al programa los datos que vamos a usar
Sheets("hoja1").Select
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)

'Crear tabla dinámica en blanco; especificamos la ubicación de salida y nombre de la tabla
Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets("Hoja2").Range("B3"), TableName:="PivotTable3")
PT.Format xlReport6
'Actualizacion
PT.ManualUpdate = True

'Nombramos los campos. Primero ponemos a los vehículos y luego las zonas
PT.AddFields RowFields:=Array("Vehículo", "Zona")

'Estableciendo campos de datos
With PT.PivotFields("Monto")
.Orientation = xlDataField
.Function = xlSum           'Con xlSum se tomará la variable como VALOR. Además se acumulará.
.Position = 1
.NumberFormat = "#,##0"
End With

'Calcular la tabla dinámica
PT.ManualUpdate = False
Sheets("Hoja2").Select
End Sub

De esta manera, con esta macro se evitará estar creando tablas dinámicas constantemente si solo asignamos la macro a un botón, se podrá evitar tareas repetitivas con sólo dar un click.

El archivo que mostrará este ejemplo estará adjunto:

Descargar Ejemplo de Tabla dinámica

 

Elaborado por: Álvaro Diego Llano Castañeda

Un comentario

  1. Considero que si este formato se mantiene siempre y se alimenta de una base periodicamente es efectiva.Caso contrario, no llega ser tan util.

Deja una respuesta

Los campos requeridos estan marcados con *.