SourceData in Pivotmakro anpassen
Schritt-für-Schritt-Anleitung
Um das SourceData
in einem Pivotmakro mit VBA dynamisch anzupassen, kannst Du folgende Schritte befolgen:
-
Bestimme die letzte Zeile: Du musst die letzte Zeile in Deiner Tabelle definieren. Dies kannst Du mit folgendem Code tun:
Dim letzteZeile As Long
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
-
Erstelle das PivotCache: Verwende die ActiveWorkbook.PivotCaches.Create
-Methode, um das PivotCache zu erstellen. Ersetze die feste Zeilenzahl im SourceData
durch die Variable letzteZeile
.
ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:="Tabelle2!R1C1:R" & letzteZeile & "C2", _
Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Tabelle3!R3C1", _
TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion14
-
Fahre mit der PivotTable-Formatierung fort: Nachdem Du das PivotCache erstellt hast, kannst Du die PivotTable nach Deinen Wünschen anpassen.
Häufige Fehler und Lösungen
-
Fehler: Argument nicht optimal
Dieser Fehler tritt häufig auf, wenn Du den SourceData
-Bereich nicht korrekt angibst. Stelle sicher, dass Du die Syntax korrekt verwendest: "Tabelle2!R1C1:R" & letzteZeile & "C2"
.
-
Unterstrich vergessen
Achte darauf, dass Du am Ende einer Zeile in VBA einen Unterstrich (_
) setzt, wenn der Code in der nächsten Zeile fortgesetzt wird. Andernfalls führt dies zu einem Syntaxfehler.
Alternative Methoden
Eine alternative Methode besteht darin, die PivotTable
-Methode ChangePivotCache
zu verwenden, wenn Du bereits eine PivotTable erstellt hast und nur das SourceData
aktualisieren möchtest:
Dim PivotTabelle As PivotTable
Set PivotTabelle = Sheets("Tabelle3").PivotTables("PivotTable1")
PivotTabelle.ChangePivotCache ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:="Tabelle2!R1C1:R" & letzteZeile & "C2")
Praktische Beispiele
Hier ist ein vollständiges Beispiel, wie Du das SourceData
in einem Pivotmakro anpassen kannst:
Sub PivotTabelleErstellen()
Dim letzteZeile As Long
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:="Tabelle2!R1C1:R" & letzteZeile & "C2", _
Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Tabelle3!R3C1", _
TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion14
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Aussteller/Produkt")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
"PivotTable1").PivotFields("PIs"), "Summe von PIs", xlSum
End Sub
Tipps für Profis
-
Verwende benannte Bereiche: Wenn Du oft mit dynamischen Daten arbeitest, kann es hilfreich sein, benannte Bereiche in Excel zu verwenden. So kannst Du sicherstellen, dass Deine PivotTables immer die neuesten Daten verwenden.
-
Error Handling: Implementiere Fehlerbehandlungsmechanismen in Deinen VBA-Skripten, um Probleme schnell zu identifizieren und zu beheben.
FAQ: Häufige Fragen
1. Wie finde ich die letzte Zeile in einer anderen Spalte?
Du kannst die letzte Zeile in einer anderen Spalte durch Ändern der Spaltennummer in der Cells
-Funktion bestimmen, z.B. Cells(Rows.Count, 2).End(xlUp).Row
.
2. Kann ich das SourceData
auch aus mehreren Tabellen zusammenführen?
Ja, dafür musst Du die Daten zuerst in einer Tabelle konsolidieren oder mit einer UNION-Abfrage in einer Datenbank arbeiten, bevor Du die PivotTable erstellst.