根据单击的单元格文本筛选数据透视表

时间:2016-11-25 19:00:00

标签: excel vba excel-vba

我的工作簿由两张纸组成:Sheet1是用户看到的主要仪表板,而Sheet2包含一个数据透视表和常规表。

我想实现一些VBA代码,以便用户可以单击Sheet1中的某些文本,Sheet2上的数据透视表将根据用户点击的文本进行过滤。

因此,例如,Sheet1上的A列是美国城市的列表。我希望用户能够双击Sheet1中的城市名称,并将Sheet2上的数据透视表过滤到单击城市名称的任何位置。

我不需要宏来实际将用户带到Sheet2。 我正在计划的只是引用Sheet1上的数据透视表。

我使用标准表设计了类似的东西,但我真的需要这个在数据透视表上工作,我不知道该怎么做。

更新

好的,现在这是我的代码:

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("E:P")) Is Nothing Then
    Application.ScreenUpdating = False
    Worksheets("Dillon Pivot").PivotTables("PivotTable2").ManualUpdate = True
    Worksheets("Dillon Pivot").PivotTables("PivotTable2").PivotFields("Match").ClearAllFilters
    Worksheets("Dillon Pivot").PivotTables("PivotTable2").PivotFields("Match").CurrentPage = ActiveCell.Value
    Worksheets("Dillon Pivot").PivotTables("PivotTable2").ManualUpdate = False
    Application.ScreenUpdating = True
  End If
End Sub

我希望用户能够点击主仪表板上的单元格并过滤“Dillon Pivot”上的数据透视表。

然而,当我双击一个单元格时,我收到以下错误:“应用程序定义或对象定义错误”

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

将以下代码添加到" Sheet1"事件

仅当双击的单元格位于A列内(直到最后一行内部具有城市名称的行)时,npm内的代码才会被触发。

我使用变量Intersect来设置" PivotTable2"在" Dillon Pivot"表 - 它使代码更短,更容易理解。

<强>代码

Dim PvtTbl  As PivotTable