我刚刚清理我的工作簿,并使用以下代码来整合我的 PivotCache(清理之前我有大约 200 个)。
Sub changeCache()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pc As PivotCache
Dim first As Boolean
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
For Each pt In ActiveSheet.PivotTables
If first = False Then
Set pc = pt.PivotCache
first = True
End If
pt.CacheIndex = pc.Index
Next pt
Next ws
End Sub
这已将我的 PivotCache 计数减少到 33。
Sub CountCaches()
MsgBox ActiveWorkbook.PivotCaches.Count
End Sub
之所以是 33 而不是 1,是因为我有 32 个使用数据模型构建的数据透视表。
我的问题是:有谁知道如何更改使用数据模型构建的数据透视表以全部使用相同的数据透视缓存?
编辑
我的第二个问题是:是否将多个数据透视表全部构建在数据模型上
a) 引用单个数据模型;或
b) 每个都有自己的模型,因此会使 Excel 文件“膨胀”
编辑2
进一步探索后发现,引用相同数据的数据透视表似乎共享数据模型。这可以在“连接”(位于功能区的“数据”选项卡下)中看到。从理论上讲,即使代码 ActiveWorkbook.PivotCaches.Count
对共享连接的每个数据透视表进行计数并错误地(?)指示多个缓存,这也不应该使文件“膨胀”。
但是,如果有人可以提供更明确的答案,我将保留悬赏。
最佳答案
如果我正确理解你的问题,你只需将每台电脑设置为第一台即可。因此,第一遍,给 pc 一些其他名称,例如 pcfirst,然后对于每个剩余的缓存,设置 pc=pcfirst。这里有一些来源信息http://www.contextures.com/xlPivot11.html在这里http://www.mrexcel.com/forum/excel-questions/380933-set-multiple-pivot-cache-read-one-cache.html
关于vba - 共享使用数据模型构建的数据透视表的 PivotCache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31274861/