Excel 2007 Фильтрация по нескольким сводным таблицам - PullRequest
1 голос
/ 15 сентября 2009

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

Спасибо

1 Ответ

2 голосов
/ 15 сентября 2009

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

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».

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

Если сводные таблицы статичны, это может подойти.

...