Excel: Pivot-Tabelle aus einem anderen Blatt filtern / Duplikate-Filter über mehrere Blätter hinweg

2397
Andrew

Ich arbeite mit Excel für Mac 2011.

Ich habe mehrere verschiedene Pivot-Tabellen, die jeweils Daten für die grafische Darstellung auf einem Zusammenfassungsblatt organisieren. Jede Pivot-Tabelle sollte auf dieselbe Weise gefiltert werden.

Fragen:

(1) Gibt es eine Möglichkeit, diese Filter zu verschieben / zu duplizieren / zu verknüpfen, sodass sich auch die anderen ändern, wenn sich einer ändert? (VBA funktioniert jetzt für Einzelauswahl, aber wie sieht es mit Mehrfachauswahl aus?)

(2) Gibt es eine Möglichkeit, einen einzigen universellen Filter auf der Hauptzusammenfassungsseite zu erstellen?


BEARBEITEN: Grundsätzlich möchte ich SLICERS in Excel für Mac emulieren. Irgendwelche Ideen?

0

1 Antwort auf die Frage

1
Andrew

Anhand einiger Beispiele, die ich online gefunden habe, habe ich die folgende VBA geschrieben, die erfüllt, was ich brauche. Ich habe auf meiner Übersichtsseite eine leere Pivot-Tabelle und eine mit diesem Makro verknüpfte Schaltfläche platziert, die alle anderen Pivot-Tabellen mit den gleichen Filtern aktualisiert.


HAFTUNGSAUSSCHLUSS: Dies funktioniert nicht für Felder, die "(Alle)" ausgewählt haben. Es war für mich nicht notwendig, nachzuschauen, aber es ist möglich, den folgenden Code so zu ändern, dass er die Unterstützung "(Alle)" enthält.


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