数据透视表" RefreshTable" vs"更新"方法

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

标签: excel vba excel-vba pivot-table

我想以编程方式刷新我的Excel工作簿的给定工作表中的所有数据透视表。在StackOverflow上搜索之后,我找到了this question,答案建议使用

ThisWorkbook.RefreshAll

或类似

Dim pivot As PivotTable

For Each pivot In Worksheets("MySheet").PivotTables
    pivot.RefreshTable
    pivot.Update
Next

因为我只想刷新给定工作表中的表格,所以第一种方法不是我想要的。因此,我修改了第二种方法以满足我的需求。

我在这里的问题是RefreshTable对象的UpdatePivotTable方法之间的区别是什么?我想如果我们同时使用它们,那就意味着它们在某种程度上是不同的。

在什么情况下我们只能使用其中一个来节省时间,因为似乎刷新更新在数据透视表中需要相当长的时间有很多数据?

2 个答案:

答案 0 :(得分:3)

根据this article和一点点测试,区别在于:

更新:更新单个数据透视表

刷新:使用相同的源数据更新所有数据透视表

e.g。使用相同外部数据库的所有数据透视表,或使用Excel中相同数据表的所有数据透视表 - 例如如果您有两个数据表,Data1和Data2,使用Data1的数据刷新任何数据透视表,将使用Data1的数据刷新所有数据透视表

RefreshAll:更新工作簿中的所有数据透视表

答案 1 :(得分:2)

您省略了answer

中的关键字行
  

或者,如果您的Excel版本足够老,

该代码适用于Excel版本足够大的时候(想想Excel 97 ish)。

当然,当RefreshTable之后枢轴变得更新时会出现问题,但不完全,因此需要额外调用Update以完全"更新它。自修复以来已经很长时间了,我相信在Update之后Excel 2003已经不需要Refresh