2017-10-18 161 views
0

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

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 
+0

检查https://stackoverflow.com/a/26970322/7889129 – Maddy

+0

你尝试看到宏录制生产什么,然后调整? – QHarr

回答

2

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

尝试这样的事情...

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

伟大的工作,但实际上它并不打印我想要的结果..我试图修复列的公式和工作的新公式是这一个.. .CalculatedFields.Add“Diff”,“= GETPIVOTDATA ('每月$/SU预测',$ A $ 15,'T-Lane','雅典到希腊') - GETPIVOTDATA('每月$/SU实际',$ A $ 15,'T-Lane','雅典到希腊')“ .PivotFields(”Diff“)。Orientation = xlDataField –

+0

但是,这个新公式有错误,因为它说无法设置属性 –

+0

记录宏,而您手动创建计算的字段,然后分析代码,这将给你一个想法,然后根据你的要求调整它。 – sktneer

相关问题