我正在尝试将功率透视滤镜引用到多个单元格中的一系列值。例如,如果我的过滤器具有值A,B,C,D,我希望它查看单元格A1:A10以查看有哪些值。如果A,B存在于A1:A10中,我希望过滤器仅显示A和B(每个单元只保存一个值,例如A1:A,A2:B,A3:“”等)
使用下面的代码,我只能引用一个值。
Sub SelectKey()
Dim key As String
key = Sheets("Sheet3").Range("R1").Value
Sheets("data").PivotTables("PivotTable6").PivotFields("[v_cprs_dashboard_metrics].[metric_key].[metric_key]").VisibleItemsList = Array("[v_cprs_dashboard_metrics].[metric_key].&[" & key & "]")
End Sub
这适用于常规数据透视表但不适用于powerpivot
With Worksheets("data").PivotTables("PivotTable6").PivotFields("metric_key")
.ClearAllFilters
For Each PI In .PivotItems
PI.Visible = WorksheetFunction.CountIf(Sheets("Sheet3").Range("range1"), PI.Name) > 0
Next PI
End With
答案 0 :(得分:0)
可能有更好的方法可以做到这一点,但根据我的经验,完成此任务的唯一方法是遍历PivotItems
中的PivotField
并根据条件检查名称。< / p>
Sub SelectKey()
Dim key() As String
key = Split(Sheets("Sheet3").Range("R1").Value, ",") 'load comma separated string to array
Dim pi As PivotItem
For Each pi In Sheets("data").PivotTables("PivotTable6").PivotFields("[v_cprs_dashboard_metrics].[metric_key].[metric_key]").PivotItems
Dim i As Integer
For i = LBound(key) To UBound(key) 'loop through array
If pi.Name = key(i) Then
pi.Visible = True
Exit For
Else
pi.Visible = False
End If
Next
Next
End Sub