Vba 仅刷新单个数据透视表

Vba 仅刷新单个数据透视表,vba,pivot-table,partial-page-refresh,Vba,Pivot Table,Partial Page Refresh,在Excel 2013中,我有两个名为“A”和“B”的数据透视表。我只需要刷新工作簿工作表上的一个透视表(“B”),以进行比较 我尝试了下面的所有方法,看起来它应该可以按要求工作——但没有一个可以(即,运行任何解决方案后,两个数据透视都会刷新)。我尝试将透视表数据选项更改为所有可能的组合,但结果没有更改 Sub refresh_pivot1() '================================================= Windows("File.xlsx").Ac

在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

如果两个数据透视表基于相同的数据源,则它们共享所谓的数据透视缓存。刷新数据透视表时,实际上是在刷新基础数据透视缓存,而不是单个数据透视表。这意味着,当刷新一个数据透视表时,实际上是在对共享该缓存的所有数据透视表进行重新网格化


您需要告诉Excel将第二个数据透视表分配到另一个缓存。有关如何执行此操作的代码,请参阅(特别是“为选定的数据透视表创建新数据透视缓存”一节),或为Google演示。

如果两个数据透视表基于相同的数据源,则它们共享所谓的数据透视缓存。刷新数据透视表时,实际上是在刷新基础数据透视缓存,而不是单个数据透视表。这意味着,当刷新一个数据透视表时,实际上是在对共享该缓存的所有数据透视表进行重新网格化


您需要告诉Excel将第二个数据透视表分配到另一个缓存。有关如何执行此操作的代码,请参阅(特别是“为所选数据透视表创建新数据透视缓存”一节),或者让Google了解一下。

的意思是“他们都不会”,当然:))的意思是“他们都不会”当然:)))值得注意的是,在是否共享相同的数据透视缓存方面,Excel询问何时从原始数据透视表创建第二个数据透视表的重要性。值得注意的是,Excel询问何时从原始数据透视表创建第二个数据透视表的重要性,就是否共享相同的数据透视缓存而言。