Power Pivot VBAfilter参考范围的单元格

我试图让我的力量主轴filter引用的多个单元格的值的范围。 例如,如果我的filter具有值A,B,C,则DI希望它查看单元格A1:A10以查看有哪些值。 如果A,B存在于A1:A10中,我希望filter只显示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 

可能有更好的方法来做到这一点,但从我的经验来看,实现这一目标的唯一方法是循环PivotFieldPivotItems并根据条件检查名称。

 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