如何在特定数据透视字段上应用筛选器时运行macros

我已经看到如何在数据透视表上应用filter时调用macros: 如何在透视表的select更改时自动运行macros

但我有一个不同的要求,我有5个数据透视字段,每个filter更改具有不同的function来执行。 所以,我想知道是否有可能为每个Pivot字段分配一个不同的macros?

我知道我可以使用worksheet_Change函数,然后使用范围作为参数来检查filter是否应用在该范围内。 但是这里的问题是,我将在macros中移动Pivot Fields到Column标签和行标签,随后调用其他的macros。

我不希望这样的事情发生。 这就是我正在寻找一种方法来检测一个PIVOT FIELD上的Pivot Filter变化的原因

是的,你可以,但这是非常困难的,因为PivotTable_Update事件不会告诉你哪个特定的字段被更新。 我发现了一个很大程度上的消除过程的方法,并在一切都失败的情况下使用武力。 看到我的系列post,涵盖以下链接:

[编辑]如果您使用的是Excel 2010或更高版本,则更简单的替代方法是为每个数据透视表设置一个分割器,并为原始数据透视表中的每个字段创build一个新的数据透视表,只包含该字段。 然后通过切片机将其连接到原始数据透视表。 当任何人筛选原始数据透视表或单击切片器时,它将为主数据透视表生成一个PivotTable_Update事件,并连接到该特定字段的较小的数据透视表。 因此,您只需检查Update事件引发的数据透视表的名称,然后相应地触发相应的macros。 这是从概念上看的: 在这里输入图像说明

…以下是有条件地调用macros的代码,具体取决于用户单击的字段或切片器:

Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable) Select Case Target.Name Case "PivotTable2": 'put name of macro you want to trigger here Case "PivotTable3": 'put name of macro you want to trigger here End Select End Sub 

将该代码放在ThisWorkbook代码模块中。