仅刷新单个数据透视表

Refreshing single PivotTable only

在 Excel 2013 年,我有两个名为 "A" 和 "B" 的枢轴 table。我只需要刷新工作簿 sheet 上的一个数据透视表 table ("B") 以进行比较。

我尝试了以下所有方法,看起来它应该按要求工作 - 但其中 none 会(即两个枢轴将在 运行 任何解决方案后刷新)。我尝试将 Pivot Table 数据选项更改为所有可能的组合,但结果没有改变。

Sub refresh_pivot1() 

'=================================================
Windows("File.xlsx").Activate
Sheets("Pivots").Select
'=================================================
ActiveSheet.PivotTables("B").PivotCache.Refresh
'=================================================
Worksheets("Pivots").PivotTables("B").RefreshTable
'==================================================

Dim PvtTbl As PivotTable            

For Each PvtTbl In Worksheets("Pivots").PivotTables            

    If PvtTbl = "B" Then                                            
        PvtTbl.RefreshTable          
    End If             

Next

'=================================================          
Range("G3:K12").Calculate             
'=================================================           
Dim pt As PivotTable             
Set pt = ActiveSheet.PivotTables("B")           
pt.RefreshTable            
'=================================================

End Sub

如果两个数据透视表都基于相同的数据源,则它们共享所谓的 PivotCache。刷新数据透视表时,实际上是在刷新底层 PivotCache,而不是单个数据透视表。这意味着当您刷新 一个 数据透视表时,您实际上是在刷新共享该缓存的 *所有' 数据透视表。

您需要告诉 Excel 将您的第二个数据透视表分配给不同的缓存。请参阅 http://www.contextures.com/xlPivot11.html 了解如何执行此操作的代码(特别是 "Create New Pivot Cache for Selected Pivot Table" 部分)或让 Google 试一试。