2016-06-27 29 views
1

パワーピボットフィルターの参照を複数のセルの値の範囲にしようとしています。たとえば、私のフィルタがA、B、C、Dの値を持っている場合、A1:A10というセルを調べて、そこにある値を確認します。 A1:A10にA、Bが存在する場合、フィルターにAとBのみを表示したい(各セルはA1:A、A2:B、A3: ""などの1つの値を保持します)Power Pivot VBAフィルターの参照範囲セル

以下のコード私は1つの値しか参照できません。

これは、通常のピボットテーブルではなく、PowerPivotのために働く
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 

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' 'キー=スプリット(シート( "シート3")。範囲( "R1")。バリュー、 """) ' –

+0

が動作しないよう)('薄暗いキーを試してみてくださいコマンドは何をすると思いますか? –

+0

try 'as Variant' ...配列自体に文字列をロードします。 –

答えて

0

あり、これを行うには良い方法であることが、私の経験から、これを実現する唯一の方法は、PivotItemsをループしていることPivotFieldに入力し、条件に照らして名前を確認します。

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 
関連する問題