首页 > 解决方案 > 应用于多个表格的多个单元格范围的 VBA 透视过滤器

问题描述

虽然这个话题被广泛讨论,但我一直无法找到一个合适的解决方案来解决这个问题。

作为数据分析师,我想根据多个单元格范围中的值在多个数据透视表中应用过滤器。

我一直在寻找答案并尝试应用这些解决方案:

https://www.mrexcel.com/forum/excel-questions/950078-filtering-pivot-table-based-cell-value.html

和这个:

https://www.youtube.com/watch?v=xCJgCRuVU6c&t=201s

特别是这段代码:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    'This line stops the worksheet updating on every change, it only updates when cell
    'A1 to A9 is touched
    If Intersect(Target, Worksheets(1).Range("A1:A9")) Is Nothing Then Exit Sub

'Set the Variables to be used
Dim pt As PivotTable
Dim Field As PivotField
Dim NewCat As String

'Here you amend to suit your data
Set pt = Worksheets(1).PivotTables("PivotTable1")
Set Field = pt.PivotFields("Sales Region")
NewCat = Worksheets(1).Range("A1:A9").Value

'This updates and refreshes the PIVOT table
With pt
Field.ClearAllFilters
Field.CurrentPage = NewCat
pt.RefreshTable
End With


End Sub

但是,它们不会 100% 应用,因为首先它根本不会更新任何东西(没有响应),其次它只会将过滤器应用于第一列,即使它会起作用。

请参阅附件照片,了解我希望模型的外观。在此处输入图像描述

上述内容当然不完全正确,因为过滤选项会删除表中的许多值。

数据透视表的 ID 为“PivotTable1”和“PivotTable2”。工作表称为“Sheet1”。

我希望能够更改这些值以及过滤器选项(例如,包括一个日期值过滤器。

如果有任何不清楚的地方,请告诉我。

此外,如果有任何其他不包括 VBA 的选项,这些也将受到好评。

标签: excelvbapivot

解决方案


推荐阅读