2016-06-27 106 views
1

我想讓我的功率主軸過濾器引用多個單元格中的一系列值。例如,如果我的過濾器具有值A,B,C,D,我希望它查看單元格A1:A10以查看有哪些值。如果A,B存在於A1:A10中,我希望過濾器只顯示A和B(每個單元格只保存一個值,例如A1:A,A2:B,A3:「」等)Power Pivot VBA過濾器參考範圍的單元格

With the下面的代碼我只能引用一個值。

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

嘗試'昏暗鍵()作爲String''鍵=斯普利特(表( 「工作表Sheet 3」),範圍( 「R1」)。價值 「」「)' –

+0

不行的,那是什麼命令假設要做? –

+0

嘗試'作爲Variant' ...將字符串加載到數組本身。如果這不起作用,請參閱下面發佈的答案 –

回答

0

有可能是一個更好的方式來做到這一點,但是從我的經驗,要做到這一點的唯一方法是遍歷PivotItemsPivotField中,並根據條件檢查名稱。

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