【问题标题】:Excel 2007 Filtering across multiple Pivot TablesExcel 2007 过滤多个数据透视表
【发布时间】:2010-11-28 06:25:48
【问题描述】:

在 Excel 2007 中,我有一个 Excel 表格形式的数据集,我想从中制作多个数据透视表和数据透视图。我希望能够同时在所有数据透视表和图表中同步“报告过滤器”字段,以便通过过滤(例如)将 US_Region 字段(例如)在其中一个数据透视表上的“太平洋西北地区”应用该过滤到工作簿中的所有数据透视表和图表(共享一个数据集)。有没有办法在没有 VBA 的情况下做到这一点,如果没有,在 VBA 中最灵活/最简单的方法是什么?

谢谢

【问题讨论】:

    标签: pivot-table excel vba


    【解决方案1】:

    创建一个过程来更改所有页面字段。这个循环遍历工作簿中的所有工作表,如果工作表有数据透视表,它会更改页面字段以匹配传递给子的数据透视表上的页面字段。

    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
    

    将数据透视字段的名称从“Area”更改为您需要的页面字段,例如“US_Region”。

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

    如果数据透视表是静态的,这可能会。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 2017-07-06
      相关资源
      最近更新 更多