VBA刷新数据透视表|使用VBA自动刷新所有数据透视表

Excel VBA刷新数据透视表

当我们插入一个 数据透视表 在工作表中,数据更改后的数据透视表数据本身不会发生更改,我们需要手动进行操作,但是在VBA中,有一条语句刷新数据透视表,即 表达式刷新,使用它我们可以通过引用包含它的工作表来刷新数据透视表,也可以引用工作表中的整个数据透视表并一次刷新它们。

数据透视表对于分析大量数据至关重要。它有助于进行分析,总结以及进行有用的数据解释。但是,此数据透视表的问题之一是,如果源数据发生任何更改,它将不会自动刷新,用户必须在每次更改时通过转到特定的数据透视表来刷新数据透视表。但是,请与手动过程说再见,因为这里有一种方法,您只要在数据透视表中进行任何更改,就可以刷新数据透视表。

如何自动刷新数据透视表数据VBA代码?

数据透视表唯一需要更新的时间是我们所引用的数据透视表的源数据发生任何更改。

例如,查看下面的数据和数据透视表。

现在,我将源数据中的数字从A1更改为B17。

在单元格B9中,我必须将值从499更改为1499,即数据增加了1000,但是如果您查看数据透视表,结果仍显示为4295而不是5295。我必须手动刷新数据透视表以更新数据透视表。

为解决此问题,我们需要编写一个简单的excel宏代码,以在源数据发生任何更改时刷新数据透视表。

您可以在此处下载此VBA刷新数据透视表Excel模板– VBA刷新数据透视表Excel模板

#1 –刷新所有表的简单宏

步骤1:更改数据表的事件

我们需要触发数据表的更改事件。在Visual Basic编辑器中,双击数据表。

双击工作表后,选择 “工作表” 并将事件选择为 “改变”。

您将看到一个自动子过程打开为 Worksheet_Change(ByVal目标作为范围)

步骤2:使用工作表对象

通过使用工作表对象,请参考数据表。

步骤3:按名称引用数据透视表

通过数据透视表的名称来引用数据透视表的名称。

步骤4:使用刷新表方法

选择方法为“刷新表”。

现在,只要源数据表中有任何更改,此代码就会刷新数据透视表“ PivotTable1”。您可以使用以下代码,只需更改数据透视表的名称即可。

代码:

 专用子Worksheet_Change(按范围作为目标的ByVal)工作表(“数据表”).PivotTables(“ PivotTable1”)。RefreshTable End Sub 

#2 –刷新同一工作表的所有数据透视表

如果同一工作表中有多个数据透视表,则可以单击一下鼠标刷新所有数据透视表。使用以下代码刷新工作表中的所有数据透视表。

代码:

 Sub Refresh_Pivot_Tables_Example1()工作表(“数据表”)。使用ActiveSheet选择.PivotTables(“ Table1”)。RefreshTable .PivotTables(“ Table2”)。RefreshTable .PivotTables(“ Table3”)。RefreshTable .PivotTables(“ Table4”)。 RefreshTable .PivotTables(“ Table5”)。RefreshTable End With End Sub 

您需要根据工作表的详细信息更改工作表的名称和数据透视表的名称。

#3 –刷新工作簿中的所有表

我们几乎不可能将所有数据透视表都放在同一工作表上。通常,对于每个报告,我们尝试在单独的工作表中添加单独的数据透视表。在这些情况下,我们无法继续为每个要刷新的数据透视表编写代码。

因此,我们可以做的是使用循环的单个代码,我们可以循环浏览工作簿上的所有数据透视表,并单击按钮即可刷新它们。

以下代码将循环遍历每个数据透视表并刷新它们。

代码1:

 Sub Refresh_Pivot_Tables_Example2()将PT变暗为ActiveWorkbook.PivotTables PT.RefreshTable中每个PT的数据透视表 

代码2:

 Sub Refresh_Pivot_Tables_Example3()将PC作为ActiveWorkbook.PivotCaches PC.Refresh下一个PT结束Sub 

两种代码都将刷新数据透视表。

如果要在数据透视表的数据表中有任何更改时立即刷新数据透视表,则需要将以上代码复制并粘贴到该工作簿中的“工作表更改”事件中。

#4 –通过使用工作表停用事件避免加载时间

当我们使用“工作表更改”事件时,即使数据源中没有更改,但是工作表中发生了任何更改,它也会保持刷新。

即使您在工作表中输入一个点,它也会尝试刷新数据透视表。因此,为避免这种情况,我们可以使用“工作表停用”方法代替“工作表更改”方法。

从一张图纸移动到另一张图纸时,请禁用数据透视表上的事件更新。