我有一个带有两个选项卡的文件,“数据”和“数据透视表”。数据每天更新,因此数据透视缓存的范围不是静态的。 各种枢轴从数据中更新。 我尝试编写以下内容以创建一个宏来更新数据透视缓存,然后运行循环来更新每个数据透视:
Sub UpdatePivots ()
'Turn off screen updating
Application.ScreenUpdating = False
'Declare dimensions
Dim WS As Worksheet
Dim WSD As Worksheet
Dim PT As PivotTable
Dim PTC As PivotCache
Dim WB As Workbook
Dim Rng As Range
'Update the pivot cache
Set WB = ActiveWorkbook
Set WSD = WB.Worksheets("Data")
Set Rng = WSD.Range("A1").CurrentRegion
Set PTC = WB.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:=Rng, Version:=8)
'Use loop to cycle through pivots and update with new cache
For Each WS in WB.Worksheets
For Each PT In WS.PivotTables
PT.PivotCache.Refresh
Next PT
Next WS
'Turn on screen updating
Application.ScreenUpdating = True
End Sub
目前我对将数据选项卡制作为表格不感兴趣。 我还在设置 Rng 后以及循环后添加了一个 MsgBox,并且始终看到活动工作表是“枢轴”。 所以,我显然错过了实际更新“数据”上的缓存的方法。
我尝试更改 PTC 代码的参数,但出现错误,因为我不知道自己在做什么:)
格式化结构化表中的数据(选择包括列标题的数据,然后按 Crtl+t,确保选中“我的表有标题”,然后按确定)。现在使用结构化表作为数据透视表的数据源。 当您添加/删除数据时,结构化表会自动调整大小,并且您的数据透视表始终具有正确的数据。