【问题标题】:Refreshing single PivotTable only仅刷新单个数据透视表
【发布时间】:2016-01-15 15:11:19
【问题描述】:

在 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

【问题讨论】:

  • 当然是说“他们都不会” :)))

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


【解决方案1】:

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

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

【讨论】:

  • 还值得一提的是,当从原始数据源创建第二个数据透视表时,Excel 会询问查询是否共享相同的 PivotCache。
猜你喜欢
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
相关资源
最近更新 更多