vba - 共享使用数据模型构建的数据透视表的 PivotCache

标签 vba excel pivot-table

我刚刚清理我的工作簿,并使用以下代码来整合我的 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/

相关文章:

python - pandas - 具有非数值的 pivot_table? (数据错误 : No numeric types to aggregate)

excel - 使用 VBA 从 Excel 创建到 Access 数据库的连接

vba - 删除连续的重复项 : "File sharing lock count exceeded" at 9k of 1m records

vba - 使用基于多个变量的 VBA 填充 Excel 2013 中的列

python - 如何将 Pandas 数据框的多行标题合并到单个单元格标题中?

将多个包含多个工作表的 xlsx 文件读取到一个 R 数据框中

xml - 插入选项卡的控件名称

excel - 倒计时到 VBA 中的特定日期和时间

python - 如何制作一个数据透视表,其中的值按索引排列在行中

具有非计数的Mysql数据透视表