我只是在清理工作簿,并且使用以下代码合并了我的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的一些源信息

10-06 12:54
查看更多