我只是在清理工作簿,并且使用以下代码合并了我的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个数据表是使用数据模型构建的。
我的问题是:有人知道如何将使用数据模型构建的数据透视表更改为全部使用相同的PivotCache吗?
编辑
我的第二个问题是:是否都在数据模型上构建多个数据透视表
a)引用单个数据模型;或者
b)每个都有自己的模型,因此“膨胀”了Excel文件
EDIT2
在进一步探索中,似乎数据模型与引用相同数据的数据透视表共享。可以在“连接”(位于功能区的“数据”选项卡下)中看到。从理论上讲,即使代码
ActiveWorkbook.PivotCaches.Count
对共享连接的每个数据透视表进行计数并且false(?)表示多个缓存,也不应“膨胀”文件。但是,如果有人可以提供更明确的答案,我将保留悬赏金。
最佳答案
如果我正确理解了您的问题,则只需将每台电脑设置为第一台即可。因此,在第一遍中,为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的一些源信息