Trying to use VBA to filter my Pivot Table based on Year and Period values in cells D2 and E2
我正在尝试使用 VBA 过滤我的数据透视表,因此它将分别根据单元格 D2 和 E2 中的期间和年份进行过滤。我有下面的代码,它按年份过滤,并且在列中没有会计期间的情况下工作,但是当我将会计期间放在列中时,它会在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Intersect(Target, Worksheets("CY PT").Range("E2")) Is Nothing Then Exit Sub Dim PT As PivotTable Dim Field As PivotField Dim Year As String Set PT = Worksheets("CY PT").PivotTables("CY PT") Set Field = PT.PivotFields("Fiscal Year") Year = Worksheets("CY PT").Range("E2").Value With PT Field.ClearAllFilters Field.CurrentPage = Year PT.RefreshTable End With End Sub |
.CurrentPage 方法仅适用于 PageFields。听起来您正在尝试过滤 RowFields。所以你的选择是:
- 将您的字段更改为 PageFields;或者
- 使用切片机;或者
-
使用 PageField 过滤器下拉伪装作为数据验证
下拉列表(就像我在
http://dailydoseofexcel.com/archives/2014/08/16/sync-pivots-from-dropdown/
);或者 -
遍历每个字段的 PivotItems 集合,并设置
.Visible 状态除所选项目外的所有项目为 FALSE。
如果您选择最后一个选项,您需要注意这可能需要一段时间。请参阅我在基于变量范围过滤数据透视表中发布的代码,以了解如何有效地执行此操作。还请阅读我在 http://dailydoseofexcel.com/archives/2013/11/14/filtering-pivots-based-on-external-ranges/ 上的帖子。