automatische Aktualisierung von Pivottabellen
02.03.2025 12:04:11
Kolja
ich erstelle momentan ein sehr voluminöses Preiskalkulationstool für einen Getränkehersteller.
Die recht umfangreichen Daten belaufen sich derzeit auf weit über 200 separate Tabellenblätter für die Preiskalkulation jedes einzelnen Produktes sowie natürlich auch der Zusammenfassung der relevanten Ergebnisdaten wie Preise und Preisänderungsdaten.
Bislang funktioniert alles bestens, auch die automatische Generierung eines Inhaltsverzeichnisses in Form einer intelligenten Tabelle mit den entsprechenden Verlinkungen, um schnell das gewünschte Kalkulationsblatt in diesem Blätterwaldzu erreichen.
Die weiteren Auswertungen und Darstellungen der umfangreichen Ergebniszusammenfassung realisiere ich über Pivot-Tabellen. Alles funktioniert bestens.
Allerdings gibt es einen Haken:
Die Pivot's aktualisieren sich ja bekanntermaßen von Haus aus erst einmal nicht von alleine - man muss sie extra aktualisieren.
An sich istz das ja kein Problem, auch einen Aktualisierungsbutton einzufügen ist simpel.
Das Problem liegt leider beim Anwender. In Testläufen hat sich gezeigt, dass immer wieder schlichtweg vergessen wurde, die Pivot's zu aktualisieren.
Um dies zu automatisieren, hatte ich ein refresh ausprobiert, der dies übernimmt:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ThisWorkbook.RefreshAll
End Sub
Funktioniert natürlich. Aber hat auch seine Nachteile:
1.) Mit diesem Code beanspruchte Tabellenblätter haben selbstverständlich kein "Rückgängig" mehr.
2.) Wegen dem Datenumfang leiert sich die Rechnerkiste einen Wolf - bei jeder einzelnen Aktion (Zelle wählen etc.). Logisch, Excel spult immer wieder die komplette Arbeitsmappe durch und berechnet wirklich alles immer wieder neu. Folglich leidet die Performance darunter, es dauert eben seine Zeit.
Nun hatte ich mir logischerweise überlegt, den o.g. Refresh-Code nur auf die Blätter zu setzen, die die Pivot's enthalten.
Das passt ja - sobald irgendwas gemacht wird (z.B. Zelle anwählen), dann aktualisierern sich die Pivot's.
Aber auch hier hat es der Anwender hinbekommen, nicht neu aktualisierte Pivot´s auszugeben: Er hatte nur die Blätter mit bereits vorher schon fertig vorausgewählten Pivots aufgerufen und ist ohne jede sonstige Aktion auf Drucken bzw. PDF-Erzeugung gegangen.--> Resultat: Es hatte sich nichts aktualisieren können und es wurden die falschen Preislisten ausgegeben, obwohl die ja berechnet und vorhanden sind - nur eben nicht in den Pivot's aktualisiert. Für das Tagesgeschäft des Getränkeherstellers ist sowas natürlich katastrophalt. Aber dafür macht man ja solche Testläufe.
Um dieses Szenario zu vermeiden, suche ich nach einer adäquaten Lösung anstelle von RefreshAll auf jedem Blatt bei jeder Aktion:
Variante 1:
Kann man das RefreshAll aktivieren durch bloßes Anwählen eines Blättes mit Pivot*s? Sprich: Ich klicke auf den Tabellenreiter des jeweilig betreffenden Blattes und sofort wird das RefreshAll ausgeführt und somit wird schon die Pivot aktualisiert?
Variante 2:
Kann man das Refresh auch nur auf die Pivot´s beschränken, sodass bei jeder Aktion auf allen Tabellenblättern immer nur die Pivot´s aktualisiert werden? (Die Zahlendaten werden ja eh schon immer automatisch berechnet.)
Wer hat hier eine coole zündende Idee?
Beste Grüße
Kolja
Anzeige