2009-09-14 103 views
1

在Excel 2007中,我有一個Excel表格形式的單個數據集,我想從中創建多個數據透視表和透視圖表。我希望能夠同時跨所有數據透視表和統計圖同步「報告過濾器」字段,以便通過過濾(例如)其中一個數據透視表上的US_Region字段爲「Pacific Northwest」過濾到工作簿中的所有數據透視表和圖表(共享一個數據集)。有沒有辦法做到這一點,沒有VBA,如果沒有,在VBA中做什麼是最靈活/最不靈活的方式?Excel 2007跨多個數據透視表過濾

謝謝

回答

2

創建一個程序來更改所有的頁面字段。此循環遍歷工作簿中的所有工作表,並且如果工作表具有數據透視表,則會更改頁面字段以匹配傳遞給子數據透視表上的頁面字段。

Sub ChangePage(pt As PivotTable) 

    Dim strPageValue As String 
    Dim wks As Worksheet 
    Dim ptUpdate As PivotTable 

    Application.ScreenUpdating = False 
    Application.EnableEvents = False 

    strPageValue = pt.PivotFields("Area").CurrentPage 

    For Each wks In ThisWorkbook.Worksheets 

     On Error Resume Next 
     Set ptUpdate = wks.PivotTables(1) 

     If Err.Number = 0 Then 
      On Error GoTo 0 
      wks.PivotTables(1).PivotFields("Area").ClearAllFilters 
      wks.PivotTables(1).PivotFields("Area").CurrentPage = strPageValue 
     End If 
     Err.Clear 

    Next wks 

    Application.ScreenUpdating = True 
    Application.EnableEvents = True 

End Sub 

然後一個電話到工作表中的代碼本身這個過程,並通過您更改數據透視表:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) 

    Call ChangePage(Target) 

End Sub 

變化,從「區域」樞軸字段的名稱到頁面場你需要,例如「US_Region」。

如果人們經常以其他方式更改數據透視表的結構,這可能並不合適,因爲每次數據透視表更改(包括刷新時)都會觸發。如果用戶刪除指定的頁面字段,它也會出錯。

如果透視表是靜態的,但這可能會發生。

相關問題