2016-06-27 5 views
1

여러 셀의 값 범위에 대한 파워 피벗 필터 참조를 사용하려고합니다. 예를 들어, 필자의 필터가 A, B, C, D 값을 가지고 있다면 셀 A1 : A10을보고 어떤 값이 있는지보고 싶습니다. A1 : A10에 A, B가있는 경우 필터에 A와 B 만 표시되도록합니다 (각 셀은 A1 : A, A2 : B, A3 : ""등의 한 값만 보유합니다)Power Pivot VBA 필터 참조 셀 범위

아래의 코드는 하나의 값만 참조 할 수 있습니다.

이 일반 피벗 테이블하지만은 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''키 = 분할로 희미한 키() 시도 (시트 ("Sheet3에를"). 범위 ("R1")를. 값은, "," ") ' –

+0

이 작동하지 않는 것을 무엇 명령을 사용한다고 가정하면 –

+0

'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