Excel 2007 Фильтрация по нескольким сводным таблицам

В Excel 2007 у меня есть один набор данных в виде таблицы Excel, из которой я хочу создать несколько сводных таблиц и сводных диаграмм. Я хотел бы иметь возможность синхронизировать поле «фильтр отчета» во всех сводных таблицах и диаграммах одновременно, чтобы при фильтрации (например) поля US_Region на «Тихоокеанский северо-запад» в одной из сводных таблиц применялось это фильтровать все сводные таблицы и диаграммы в книге (которые используют один набор данных). Есть ли способ сделать это без VBA, и, если нет, что было бы наиболее гибким / наименее сложным способом сделать это в VBA?

Спасибо


person John Sullivan    schedule 14.09.2009    source источник


Ответы (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».

Это может не подходить, если люди часто меняют структуру ваших сводных таблиц другими способами, так как это срабатывает при каждом изменении сводной таблицы, в том числе при ее обновлении. Также будет выдана ошибка, если пользователи удалят указанное поле страницы.

Однако, если сводные таблицы статичны, это может сработать.

person dendarii    schedule 15.09.2009