victorianer
Goto Top

(Excel) Pivot über alle Tabellenblätter

Hallo liebe Excel-Freunde!

Ich habe eine kleine Frage bzgl. Pivot Tabellen:

Ich arbeite als Praktikant in einem Produktionsbetrieb und dokumentiere täglich Störzeiten und -häufigkeiten in einer Excel Tabelle.
Jeden Tag wird ein neues (mit aktuellem Datum), aber vom Aufbau her identisches Tabellenblatt benutzt (Kopie von Vorlage).
Am Ende des Monats erstelle ich eine einseitige Übersicht, in der ich alle Ereignisse summiert aufliste (z.B.: Maschine X stand Y Mal für insgesamt Z Minuten (das ist jetzt nur ein simples Beispiel)).

Nun gibt es bei Pivot Tabellen die Option, mehrere Konsolidierungsbereiche festzulegen. Schön und gut, muss ich aber trotzdem alles manuell festlegen/hinzufügen.

Nun zu meiner Frage:

Gibt es die Möglichkeit, den Bereich der Pivot Tabelle automatisch über ALLE Tabellenblätter festzulegen, ohne das ich jedes einzelne extra hinzufügen muss?
In der Praxis wäre es also so, dass ich z.b. morgen ein neues Tabellenblatt hinzufüge, und dieses automatisch Teil der "Bilanz" ist.

Würde mich sehr über Ratschläge und Tipps freuen.

Viele Grüße,
Victorianer

Content-Key: 214416

Url: https://administrator.de/contentid/214416

Ausgedruckt am: 29.03.2024 um 04:03 Uhr

Mitglied: colinardo
colinardo 15.08.2013, aktualisiert am 19.05.2016 um 14:11:45 Uhr
Goto Top
Hallo Victorianer,
habe ich Dir eine mögliche Lösung in ein Demo-Dokument gepackt.
Die Vorgehensweise im Dokument ist diese:
  • Erstellen einer Konsolidierungstabelle mit VBA die automatisch alle Tabellenblätter außer dem ersten als Quellen nimmt
  • Die Pivot-Tabelle hat diese Konsolidierungtabelle als Datenquelle
  • Der Button fügt zur Demo ein weiteres Sheet hinzu, konsolidiert alle Sheets und aktualisiert die Pivot-Tabelle in einem Schritt

Hoffe das war so richtig von mir interpretiert ...

Der Code im Sheet sieht folgendrmaßen aus:
Sub consolidate()
    'Worksheet hinzufügen  
    Worksheets(Worksheets.Count).Copy After:=Worksheets(Worksheets.Count)
    Worksheets(1).Select
    
    Dim sheet1 As Worksheet
    Set sheet1 = Worksheets(1)
    Dim i As Integer
    ReDim sArray(1 To 1)
    i = 1
    For f = 2 To Worksheets.Count
        ReDim Preserve sArray(1 To i)
        sArray(i) = Worksheets(f).Name & "!R1C1:R5C3"  
        i = i + 1
    Next
    sheet1.Range("A2").consolidate Sources:=(sArray), Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False  
    sheet1.PivotTables("PivotTable1").RefreshTable  
End Sub
Das wichtigste für dich steht ab Zeile 11. Zeile 11 bestimt welche Sheets einbezogen werden. In Zeile 13 wird ganz hinten in Excel R1C1-Schreibweise der Zellenbereich festgelegt in dem in jedem Sheet die Daten liegen. Zeile 16 musst du je nach Art der Consolidierung die Parameter noch anpassen. In der VBA Hilfe zu dieser Funktion steht mehr dazu. Zu guter letzt wird in Zeile 17 die Pivot-Tabelle mit dem Namen PivotTable1 aktualisiert.


Grüße Uwe
Mitglied: victorianer
victorianer 21.08.2013 um 07:49:22 Uhr
Goto Top
Erstmal Entschuldige die späte Antwort, bin leider nicht eher dazu gekommen.

Dann: Vielen Dank für die großartige Hilfe, komme leider auch erst jetzt dazu den Code zu testen. Die DemoDatei sieht schonmal super aus, jetzt muss ich das ganze noch anpassen, vielen vielen Dank dafür!