1

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

谢谢

4

1 回答 1

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”。

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

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

于 2009-09-15T11:01:48.900 回答