仅刷新单个数据透视表
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 试一试。
在 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 试一试。