仅刷新单个数据透视表

时间:2016-01-15 15:11:19

标签: vba pivot-table partial-page-refresh

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

我在下面尝试了所有内容,看起来它应该按要求工作 - 但它们都不会(即在运行任何解决方案后两个枢轴都会刷新)。我尝试将数据透视表数据选项更改为所有可能的组合,而不会改变结果。

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

1 个答案:

答案 0 :(得分:3)

如果两个数据透视表都基于相同的数据源,那么它们将共享所谓的 PivotCache 。刷新数据透视表时,实际上是刷新了基础数据透视表,而不是单个数据透视表。这意味着当您刷新一个数据透视表时,实际上是在重新编写*共享该缓存的所有“数据透视表”。

您需要告诉Excel将第二个数据透视表分配给不同的缓存。有关如何执行此操作的代码,请参阅http://www.contextures.com/xlPivot11.html(特别是“为选定的数据透视表创建新的数据透视表”部分)或者让Google自行调整。