2012-08-16 2 views
0

VBA를 사용하여 피벗 테이블에서 데이터를 추출하고 조작하려고합니다. 피벗 테이블에 행 레이블이 세 개 있습니다 (D_Campaign, D_TL, D_Agent_Name).피벗 테이블 행 필드의 하위 집합 찾기

For Each pt1 In pt.RowFields("D_Agent_Name").PivotItems 
    Debug.Print pt1.Name 
Next pt1 

내가 'D_Agent_Name'의 모든 레이블 목록을 얻을 수 있습니다 사용

. 그러나, 내가 원하는 것은 'D_TL'의 주어진 값에 대해 'D_Agent_Name'의 레이블 목록입니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

+0

에 컴팩트 형식으로 작동하지 않습니다,이 고전적인 형식으로 피벗 테이블을 필요로한다는 것이다 피벗 테이블의 소스 코드. – danielpiestrak

답변

0

나는 @gimp가 소스 데이터를 처리하는 것이 더 쉽습니다 것을 잘 할 수 있다고 생각하지만, 여기에 나를 위해 작동 뭔가 :

Sub PrintTLValues(AgentName As String) 
Dim pt As Excel.PivotTable 
Dim rfTL As Excel.PivotField 
Dim rfAN As Excel.PivotField 
Dim cell As Excel.Range 

Set pt = ThisWorkbook.Worksheets(1).PivotTables(1) 
Set rfAN = pt.RowFields("D_Agent_Name") 
Set rfTL = pt.RowFields("D_TL") 
For Each cell In Intersect(pt.DataBodyRange.EntireRow, rfAN.DataRange) 
    If cell.Value = AgentName Then 
     Debug.Print Intersect(cell.EntireRow, rfTL.DataRange).Value 
    End If 
Next cell 
End Sub 

전화를 같은 : 내가 좋아하는

GetTLValues "Michael" 

피벗 테이블 프로그래밍 및 내 경험에 피벗 테이블 고양이 스킨하려면 일반적으로 여러 가지 방법이 있습니다. Jon Peltier의 사이트에서 테이블 범위 can be found을 피봇 팅하기위한 프로그래밍에 유용한 참고 자료입니다.

+0

Doug 감사합니다. 코드와 Jon Peltier 사이에서 나는 결국 거기에갔습니다. 건배. – Michael

0

Doug이 올바른 방향으로 나를 가리킨 후에 결국 거기에 들었습니다. 내가 발견 한

Sub ptSelect() 
    ' Select intersect of pivot table and output cell values to debug window 
    Dim pt As PivotTable 
    Dim ptSel As Range 

    Set pt = Worksheets("Pivot Table").PivotTables("PT Sales Data") 
    Set ptSel = Intersect(pt.PivotFields("D_Campaign").PivotItems("Acquisition").DataRange.EntireRow, pt.PivotFields("D_TL").DataRange) 

    For Each Cell In ptSel 
     Debug.Print Cell.Value 
    Next Cell 
End Sub 

것은 그것에서 데이터를 추출하는 것이 더 쉬울 수 2007 년 5 월