GetPivotData in VBA optimal nutzen
Schritt-für-Schritt-Anleitung
-
PivotTable erstellen: Stelle sicher, dass du eine PivotTable in Excel erstellt hast, die die gewünschten Daten enthält.
-
VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.
-
Code eingeben: Füge den folgenden Beispielcode ein, um die GetPivotData-Funktion zu verwenden:
Sub GetPivotDataBeispiel()
Dim pivKosten As PivotTable
Set pivKosten = Worksheets("Tabelle3").PivotTables(1)
'Einzelwert abfragen
MsgBox pivKosten.GetPivotData("Summe von Kosten", "MatNr", "DeinWert")
End Sub
-
Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die Ergebnisse zu sehen.
Häufige Fehler und Lösungen
-
Fehler: "Objekt nicht gefunden"
Lösung: Überprüfe, ob die PivotTable korrekt referenziert wurde und ob das Tabellenblatt existiert.
-
Fehler: "Kein gültiger Filter"
Lösung: Stelle sicher, dass der Filterwert tatsächlich in der PivotTable existiert. Nutze die VisibleItems-Eigenschaft, um diese Werte zu überprüfen.
Alternative Methoden
-
Verwendung von Wildcards: In Excel gibt es keine direkte Möglichkeit, Wildcards in GetPivotData zu verwenden. Stattdessen kannst du Filter zurücksetzen, bevor du die Daten abfragst.
-
IF THEN ELSE: Wenn du verschiedene Filter anwendest, kannst du mit IF THEN ELSE arbeiten, um die Logik zu steuern. So kannst du entscheiden, ob ein Filter verwendet werden soll oder nicht.
Praktische Beispiele
Hier sind zwei nützliche Makros, um Einzelwerte und Gesamtsummen zu ermitteln:
Sub aaPivottestEinzeln()
Dim Wert As Double, pivKosten As PivotTable, i As Integer
Dim ptField As PivotField
Set pivKosten = Worksheets("Tabelle3").PivotTables(1)
Set ptField = pivKosten.RowFields("MatNr")
For i = 1 To ptField.VisibleItems.Count
Wert = pivKosten.GetPivotData("Summe von Kosten", "MatNr", _
IIf(ptField.VisibleItems(i) = "(blank)", "(Leer)", ptField.VisibleItems(i)))
MsgBox ptField.Name & ": " & ptField.VisibleItems(i) & vbLf & _
"Summe Kosten: " & Wert
Next
End Sub
Sub aaPivottestAlle()
Dim SumWert As Double, pivKosten As PivotTable, i As Integer
Dim ptField As PivotField
Set pivKosten = Worksheets("Tabelle3").PivotTables(1)
Set ptField = pivKosten.RowFields("MatNr")
ptField.ClearAllFilters ' Filter zurücksetzen
For i = 1 To ptField.VisibleItems.Count
SumWert = SumWert + pivKosten.GetPivotData("Summe von Kosten", "MatNr", _
IIf(ptField.VisibleItems(i) = "(blank)", "(Leer)", ptField.VisibleItems(i)))
Next
MsgBox ptField.Name & vbLf & _
"Gesamtergebnis Kosten: " & pivKosten.GetPivotData("Summe von Kosten") & vbLf & _
"Gesamtergebnis Kosten (Summe Einzelwerte): " & SumWert
End Sub
Tipps für Profis
-
Verwende VisibleItems: Diese Methode hilft dir, nur die sichtbaren Elemente in der PivotTable zu berücksichtigen, was die Abfrage von Daten vereinfacht.
-
Parameter dynamisch gestalten: Überlege, wie du Parameter in deinen Makros strukturieren kannst, um flexibler mit unterschiedlichen Filterbedingungen zu arbeiten.
-
Dokumentation lesen: Nutze die Excel-Dokumentation und VBA-Hilfe, um mehr über die GetPivotData-Funktion zu erfahren und deren Anwendung zu optimieren.
FAQ: Häufige Fragen
1. Kann ich Wildcards in GetPivotData verwenden?
Leider unterstützt GetPivotData keine Wildcards. Du musst die Filter entsprechend zurücksetzen oder alternative Logik verwenden.
2. Wie kann ich Filter zurücksetzen?
Du kannst ptField.ClearAllFilters verwenden, um alle Filter für ein bestimmtes Feld zurückzusetzen, bevor du die Daten abfragst.
3. Ist GetPivotData auch in Excel Online verfügbar?
Die GetPivotData-Funktion ist in Excel Online verfügbar, aber die Möglichkeiten zur Automatisierung mit VBA sind dort eingeschränkt.