Excel: сводная таблица фильтров из другого листа / дублирующие фильтры по всем листам

2335
Andrew

Я работаю с Excel для Mac 2011.

У меня есть несколько различных сводных таблиц, каждая из которых организует данные для построения графиков на сводном листе. Каждая сводная таблица должна быть отфильтрована одинаково.

Вопросы:

(1) Есть ли способ переместить / продублировать / связать эти фильтры так, чтобы при изменении одного из них изменились и другие? (VBA работает для одиночных выборов сейчас, но как насчет нескольких выборов?)

(2) Есть ли способ создать единый универсальный фильтр на главной сводной странице?


РЕДАКТИРОВАТЬ: в основном, я хочу эмулировать SLICERS в Excel для Mac. Есть идеи?

0

1 ответ на вопрос

1
Andrew

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


ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это не будет работать для полей, в которых выбрано «(Все)». Мне не нужно было заглядывать, но можно изменить следующий код, добавив поддержку «(Все)».


Sub UpdateAllPivotTables() Dim ws As Worksheet Dim wsMain As Worksheet Dim ptMain As PivotTable Dim pt As PivotTable Dim pfMain As PivotField Dim piMain As PivotItem Dim pi As PivotItem Dim pf As PivotField Dim hadError As Boolean   On Error Resume Next Set wsMain = ActiveSheet Set ptMain = ActiveSheet.PivotTables(1)  Application.EnableEvents = False   For Each ws In ThisWorkbook.Worksheets If (Not (ws.Name = wsMain.Name)) Then ws.Unprotect For Each pt In ws.PivotTables pt.ManualUpdate = True For Each pf In pt.PageFields For Each pi In pf.PivotItems If (Not (pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible)) Then pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible End If Next pi Next pf pt.ManualUpdate = False Next pt 'ws.Protect End If Next ws Application.EnableEvents = True  End Sub 

Похожие вопросы