2012-08-16 96 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_Agent_Name'中給定值'D_TL'的標籤列表。任何人都可以將我指向正確的方向嗎?

+0

它不會與緊湊的格式工作,它可能會更容易從數據中提取數據透視表的源數據。 – danielpiestrak 2012-08-16 17:01:13

回答

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

感謝道格,我不是那麼喜歡但非常接近。在你的代碼和Jon Peltier之間,我最終到了那裏。乾杯。 – Michael 2012-08-17 08:51:38

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年

相關問題