La Tabla Dinámica propuesta puede ser utilizada por una empresa comercial de venta de ejes de acero, fierro y bronce en las medidas más comerciales. Mediante ella puede conocer el stock de sus productos y su valor a precio de costo.
Esta Tabla permite el registro de entrada en unidades de productos, su costo unitario y su valor a precio de entrada por tipo de material de los ejes, así también registra las unidades de salida y el costo total de estas salidas y calcula en términos monetarios la diferencia entre la entradas y salidas y efectúa los totales parciales y generales.
Ejemplo de Tabla Dinámica para control de Costos
La Macro se ha procesado de la siguiente manera
Sub Crear_TablaDinamica()
Dim HTD1 As Worksheet
Dim HTD2 As Worksheet
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim PRange As Range
Dim FinalRow As Long
'Se define la hoja de trabajo
Set HTD1 = Worksheets("RESUMEN")
'Borrar las tablas dinámicas que se encuentran en la hoja
For Each PT In HTD1.PivotTables
PT.TableRange2.Clear
Next PT
'Definir el área de entrada y establecer un caché dinámico
Set HTD2 = Worksheets("COSTOS")
FinalRow = HTD2.Cells(Rows.Count, 1).End(xlUp).Row
Set PRange = HTD2.Cells(1, 1).Resize(FinalRow, 10)
'Nos situamos en la hoja con los datos
Sheets("COSTOS").Select
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)
'Se crea una tabla dinámica en blanco, especificando la ubicación de salida y nombre de la tabla
Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets("RESUMEN").Range("B3"), TableName:="PivotTable3")
PT.Format xlReport3
'Actualizacion automatica
PT.ManualUpdate = True
PT.AddFields RowFields:=Array("PRODUCTO", "MATERIAL")
'Establecer los campos de datos
With PT.PivotFields("CANTIDAD INGRESADA (Kg.)")
.Orientation = xlDataField
.Function = xlSum
.Position = 1
.NumberFormat = "#,##0"
End With
With PT.PivotFields("COSTO DE ENTRADA (S/.)")
.Orientation = xlDataField
.Function = xlSum
.Position = 2
.NumberFormat = "#,##0"
End With
With PT.PivotFields("CANTIDAD DE SALIDA (kg.)")
.Orientation = xlDataField
.Function = xlSum
.Position = 3
.NumberFormat = "#,##0"
End With
With PT.PivotFields("COSTO DE SALIDA (S/.)")
.Orientation = xlDataField
.Function = xlSum
.Position = 4
.NumberFormat = "#,##0"
End With
With PT.PivotFields("ENTRADAS - SALIDAS (S/.)")
.Orientation = xlDataField
.Function = xlSum
.Position = 5
.NumberFormat = "#,##0"
End With
'Calcular la tabla dinámica
PT.ManualUpdate = False
'PT.ManualUpdate = True
Sheets("RESUMEN").Select
End Sub
Elaborado por: José Delgado
17/02/2013 a las 10:05 pm
Excelente ejemplo de como manejar información a través de un formulario. Bastante didactico
10/05/2013 a las 12:20 pm
excelente, solo me interesaria poder hacer lo siguiente, una vez que armo la planilla, poder volver a pegar el reporte en la planilla que alimenta los datos y que la tabla dinamica se regenere, en el ejemplo que tome yo de costos, dice crear una tabla dinamica nueva, y no se actualiza con los nuevos datos, justamente porque ya hay una nueva tabla una vez que ejecute el comando por primera vez. Como podría corregir el código para decirle que la tabla se modifique cada vez que oprimo el boton (cree un boton para que ejecute el código)?
MIl graciias!!