Workbook.RefreshAll刷新数据透视表或数据透视表吗?

时间:2018-06-14 20:01:26

标签: excel-vba refresh pivot-table vba excel

如果一个工作簿有100个Pivot表全部使用一个缓存,Workbook.RefreshAll会启动100次刷新还是只有1?

2 个答案:

答案 0 :(得分:1)

回答此类问题的最简单方法是编写一些代码并进行测试。

Sub RefreshTest()
Dim TimeTaken As Date

TimeTaken = Now()
ActiveWorkbook.RefreshAll
TimeTaken = Now() - TimeTaken
Debug.Print Now() & vbTab & "Refresh All" & vbTab & Format(TimeTaken, "HH:MM:SS") & " seconds."

TimeTaken = Now()
ActiveWorkbook.PivotCaches(1).Refresh
TimeTaken = Now() - TimeTaken
Debug.Print Now() & vbTab & "Refresh Specific Cache" & vbTab & Format(TimeTaken, "HH:MM:SS") & " seconds."
End Sub

在我的PC上,在具有1048575行的数据透视表上进行测试时,使用RefreshAll和刷新其中一个数据透视表的PivotCache之间没有区别。

答案 1 :(得分:0)

这是一个有趣的问题。我最近在mrexcel.com上发现了一条帖子,询问在每个数据透视表中循环并分别更新每个数据透视表或使用.RefreshAll的差异。

Jerry Sullivan发布了一个回答(2011年8月16日),其中包含以下评论(版本#2 - > .RefreshAll,版本#1 - >循环播放pt's):

  

版本#2可能更有效。除了不单步执行每个工作表之外,它可能会更新每个PivotCache一次,而如果任何数据透视表共享相同的数据透视表,则这些数据透视表将在版本#1下多次刷新。

虽然,我注意到他说“可能”。