Excel VBA - 数据透视表上的多个过滤器:一个链接到过滤其他数据透视表;一个基于我刚刚在选定范围内点击的单元格

时间:2017-06-22 12:17:17

标签: excel excel-vba vba

我正在尝试编写一个基于位置和产品制作数据透视表的报表。 位置过滤器应该与该工作表上另一个数据透视表的过滤器相同(但是,我不能使用切片器,因为数据集不相同)。 产品过滤器应根据我在一定范围内单击的单元格而改变。

我已经尝试了很多在不同论坛上找到的东西并且已经调整到我的需求,但在我看来问题是我需要一个私有的子SelectionChange才能动态地改变产品。但是,我需要一个PivotTableUpdate私有子用于位置过滤器。一张纸上不能同时使用两张纸吗?那么如何处理这些案件呢? 我用于productfilter的代码是:     Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim ws As Worksheet
    Dim pt As PivotTable

If Target.Column = 13 Then
  Range("M2").Value = Target.Value

End If
End Sub

这基本上是将第13列中单击的单元格的值复制到单元格M2,单元格M2是我的可循环过滤器的单元格。另外一个问题是,如果我点击一个没有提供有效过滤条目的单元格,我会收到错误。怎么解决?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果两个pivottables在同一张纸上并且有一个页面过滤器,那么就像将其添加到ThisWorkbook模块一样简单:

Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
    Application.EnableEvents = False
    If Target.PageRange.Column <> Sh.PivotTables(1).PageRange.Column Then
        Sh.PivotTables(1).PageRange.Cells(1, 2).Value = Target.PageRange.Cells(1, 2).Value
    Else
        Sh.PivotTables(2).PageRange.Cells(1, 2).Value = Target.PageRange.Cells(1, 2).Value
    End If
    Application.EnableEvents = True
End Sub