数据透视表展开“值”VBA

我试图自动添加字段到已经创build的数据透视表。 这些字段将是“期间1的总和”…“期间360的总和”。 我已经有了1-60的时间,但是我失去了61-360。 手动拖放300次将是一件痛苦的事情。 所以我写了一个macros,但我得到的错误: 无法获得枢轴字段类的枢轴项目属性

由于数据透视表已经创build(这是一个很多格式怪异的大表),我不想改变任何东西。 我只是想把这些时期加上period61-period360的值。

我附上我的代码。 任何人可以给我的帮助将是非常感谢,因为我不知道我做错了什么,我试图不要太沮丧。

非常感谢你提前。

这是我的代码:

'--------------------- Expand_Pivot_to_360M Macro-------------------' Sub Expand_Pivot_to_360M() ' Setting Pivot field classes to the "unable to get pivot items property of the pivot field class" error Sheets("Monthly Summary").Select With ActiveSheet.PivotTables("PivotTable1").PivotFields("universe") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("PivotTable1").PivotFields("buckets_break") .Orientation = xlRowField .Position = 2 End With With ActiveSheet.PivotTables("PivotTable1").PivotFields("pool_name") .Orientation = xlRowField .Position = 3 End With With ActiveSheet.PivotTables("PivotTable1").PivotFields("gl_company_code") .Orientation = xlRowField .Position = 4 End With With ActiveSheet.PivotTables("PivotTable1").PivotFields("LEP") .Orientation = xlRowField .Position = 5 End With 

循环展开360个周期

 ' Using a Loop to Expand Pivot for 360 periods Dim i As Integer For i = 61 To 360 ' start at period 61 since periods 1 to 60 already include in pivot Sheets("Monthly Summary").Select ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Period_i"), "Sum of Period_i", xlSum With ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Period_i") .Caption = "Count of Period_i" .Function = xlCount End With With ActiveSheet.PivotTables("PivotTable1").PivotFields("Count of Period_i") .Caption = "Sum of Period_i" .Function = xlSum End With Next i End Sub 

你有很多从macroslogging生成的无关代码。 此外,您可能会收到“应用程序定义或对象定义的错误”消息,因为您要添加的一个或多个字段已经存在。

我会build议这个…

 Dim i as Integer Dim found as Boolean Dim aPItem as PivotItem With Sheets("Monthly Summary").PivotTables("PivotTable1") For i = 61 to 360 found = false For Each aPItem In .DataPivotField.PivotItems 'Check field not already there If aPItem.Caption = "Sum of Period_" & i Then found = True Exit For End If Next aPItem If Not found then 'add field .AddDataField .PivotFields("Period_" & i), "Sum of Period_" & i, xlSum End If Next i End With