2009-09-14 65 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”。

如果人们经常以其他方式更改数据透视表的结构,这可能并不合适,因为每次数据透视表更改(包括刷新时)都会触发。如果用户删除指定的页面字段,它也会出错。

如果透视表是静态的,但这可能会发生。

相关问题