在数据透视表中添加计算字段

时间:2017-10-18 06:27:08

标签: excel vba excel-vba pivot-table

我创建了一个数据透视表,我想在其中添加一个列,在该列中,它将打印数据透视表的其他两列之间的差异(值)。我将提供与构建数据透视表相关的代码部分。很明显,我在最后一部分尝试了一些东西,但它什么都不打印。它运行但它不打印任何东西。它只能正确打印数据透视表,而不能打印新列。

Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range

Application.DisplayAlerts = True
Set DSheet = Worksheets("Budget_Report")

Set PRange = DSheet.Range(Cells(1, 27), Cells.SpecialCells(xlCellTypeLastCell))

Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange)
Set PTable = PCache.CreatePivotTable(TableDestination:=DSheet.Cells(15, 1), TableName:="PivotTable1")

With ActiveSheet.PivotTables("PivotTable1")
 With .PivotFields("T-Lane")
    .Orientation = xlRowField
    .Position = 1
    .Subtotals(1) = True
    .Subtotals(1) = False
 End With

With .PivotFields("Monthly Cost FCST")
    .Orientation = xlDataField
    .Position = 1
    .Function = xlAverage
    .NumberFormat = "0.00"
    .Caption = "Monthly Cost Forecast"
End With

With .PivotFields("Monthly Vol FCST")
    .Orientation = xlDataField
    .Position = 2
    .Function = xlAverage
    .NumberFormat = "0.00"
    .Caption = "Monthly Vol Forecast"
End With

With .PivotFields("Monthly $/SU FCST")
    .Orientation = xlDataField
    .Position = 3
    .Function = xlAverage
    .NumberFormat = "0.00"
    .Caption = "Monthly $/SU Forecast"
End With

With .PivotFields("Monthly Cost Actuals")
    .Orientation = xlDataField
    .Position = 4
    .Function = xlSum
    .NumberFormat = "0.00"
    .Caption = "Monthly Cost Actual"
End With

With .PivotFields("Monthly Vol Actuals")
    .Orientation = xlDataField
    .Position = 5
    .Function = xlSum
    .NumberFormat = "0.00"
    .Caption = "Monthly Vol Actual"
End With

With .PivotFields("Monthly $/SU Actuals")
    .Orientation = xlDataField
    .Position = 6
    .Function = xlAverage
    .NumberFormat = "0.00"
    .Caption = "Monthly $/SU Actual"
End With

    .CalculatedFields.Add "Diff", "= 'Monthly Cost FCST'- 'Monthly Cost Actuals'"

End With

1 个答案:

答案 0 :(得分:2)

添加“计算”字段后,您需要将其方向设置为xlDataField,以使其在数据透视表上可见。

尝试这样的事情......

.CalculatedFields.Add "Diff", "= 'Monthly Cost FCST'- 'Monthly Cost Actuals'"
.PivotFields("Diff").Orientation = xlDataField