Power Pivot VBA过滤器单元格的参考范围
我正在尝试将我的power pivot筛选器引用到多个单元格中的一系列值。例如,如果我的过滤器有值A、B、C、D,我希望它查看单元格A1:A10以查看有哪些值。如果A1:A10中存在A、B,我希望过滤器仅显示A和B(每个单元格仅包含一个值,例如A1:A、A2:B、A3:“”等) 使用下面的代码,我只能引用一个值Power Pivot VBA过滤器单元格的参考范围,vba,excel,powerpivot,Vba,Excel,Powerpivot,我正在尝试将我的power pivot筛选器引用到多个单元格中的一系列值。例如,如果我的过滤器有值A、B、C、D,我希望它查看单元格A1:A10以查看有哪些值。如果A1:A10中存在A、B,我希望过滤器仅显示A和B(每个单元格仅包含一个值,例如A1:A、A2:B、A3:“”等) 使用下面的代码,我只能引用一个值 Sub SelectKey() Dim key As String key = Sheets("Sheet3").Range("R1").Value Sh
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
也许有更好的方法可以做到这一点,但根据我的经验,实现这一点的唯一方法是循环通过
数据透视字段中的数据透视项
,并根据条件检查名称
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
也许有更好的方法可以做到这一点,但根据我的经验,实现这一点的唯一方法是循环通过数据透视字段中的数据透视项
,并根据条件检查名称
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
尝试Dim key()作为字符串key=Split(Sheets(“Sheet3”).Range(“R1”).Value,,”)
不起作用,该命令应该做什么?尝试作为变量…将字符串本身加载到数组中。如果不起作用,请参阅下面我发布的答案tryDim key()作为字符串key=Split(Sheets(“Sheet3”).Range(“R1”).Value,“,”)
不起作用,该命令应该做什么?请尝试将作为变量
。。。将字符串本身加载到数组中。如果这不起作用,请参阅我在下面发布的答案