如何在每次更改数据源时自动更新数据透视表

时间:2018-10-31 11:21:56

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

这是我的设置:

表格“数据”是(格式化的)表格。

表“破折号”是基于表“数据”和大量切片器的数据透视表。

“ nr”页是a)基于“数据”的数据透视表,仅显示一个nr(工作人员数)。

“ nr”页是b)格式的表格,我在其中使用“单个nr”来计算52周的每周班次。

表“ nr”是c)“每周班次”表(“ PIVnyKIT”)的数据透视表。

我希望能够从工作表“破折号”中的切片器中选择数据,并在工作表“ nr”变化中查看表“每周变化”中的数据(我正在从该表中提取图表,工作表“破折号”)。 因为更改背景数据时数据透视表不会自动更新,所以我打开了vba编辑器。 在此,我选择了“ Microsoft Excel对象”和工作表“ nr”,并输入了以下vba代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) PivotTables("PIVnyKIT").RefreshTable End Sub

但是出于某种奇怪的原因,它不起作用... 所有值都会按需更新,但数据透视表“ PIVnyKIT”保持不变。直到我选择(单击)工作表“ nr”中的随机单元格。 然后“ PIVnyKIT”突然更新。

我已经完成了som测试,并且当我直接对数据表进行更改(并按Enter键)时,这种更新数据透视表的方法似乎效果很好。 但是,当数据表根据另一个工作表中的公式和切片器选择进行更新时,则不会。

有人知道如何进行这项工作吗?可能是另一种方式吗?

1 个答案:

答案 0 :(得分:1)

尝试:

Private Sub Worksheet_Change(ByVal Target As Range)

   Application.EnableEvents = False
   ThisWorkbook.RefreshAll
   Application.EnableEvents = True

End Sub