Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SourceData in Pivotmakro anpassen

Forumthread: SourceData in Pivotmakro anpassen

SourceData in Pivotmakro anpassen
11.03.2015 09:56:21
Sarah
Hallo ihr Lieben, könnt ihr mir sagen ob und wie ich in VBA das SourceData so verändern kann, dass es automatisch die letzte Zeile nimmt anstatt einer vorgegebenen Zeilenzahl.
Im Moment sieht es so aus:
Range("A1:B10001").Select
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Tabelle2!R1C1:R10001C2"
, Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Tabelle3!R3C1", TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion14
Sheets("Tabelle3").Select
Cells(3, 1).Select
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
Range("B4").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("Aussteller/Produkt"). _
AutoSort xlDescending, "Summe von PIs", ActiveSheet.PivotTables("PivotTable1"). _
PivotColumnAxis.PivotLines(1), 1
Das erste würde ich dann einfach in Range("A1:B" & letzteZeile).Select ändern (natürlich nachdem ich letzteZeile definiert habe), aber wie kann ich das "Tabelle2!R1C1:R809C2" entsprechend anpassen?
Wäre sehr dankbar wenn mir jemand helfen könnte :)
LG

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Tabelle1!R1C1R" &letzteZeile&"C2" owT
11.03.2015 10:02:06
Rudi

AW: Tabelle1!R1C1R" &letzteZeile&"C2" owT
11.03.2015 10:51:53
Sarah
Schonmal vielen Dank für die schnelle Antwort!
Jetzt krieg ich allerdings nen Fehler!
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Tabelle2!R1C1R" & letzteZeile & "C2", Version:=xlPivotTableVersion14).CreatePivotTable
TableDestination:="Tabelle3!R3C1", TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion14

ist jetzt rot und er meckert, dass das Argument nicht optimal ist.

Anzeige
AW: Tabelle1!R1C1R" &letzteZeile&"C2" owT
11.03.2015 10:54:40
Sarah
Sorry, optional nicht optimal

AW: Tabelle1!R1C1R" &letzteZeile&"C2" owT
11.03.2015 10:56:43
Rudi
Hallo,
sorry, : vergessen.
"Tabelle2!R1C1:R" & letzteZeile & "C2"
Gruß
Rudi

AW: Tabelle1!R1C1R" &letzteZeile&"C2" owT
11.03.2015 11:02:46
Sarah
Das hatte ich schon angepasst, geht immernoch nicht :(

Anzeige
AW: Tabelle1!R1C1R" &letzteZeile&"C2" owT
11.03.2015 11:25:09
Rudi
Hallo,
fehlt die evtl. ein _?
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Tabelle2!R1C1R" & letzteZeile & "C2", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Tabelle3!R3C1", TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion14
sonst lad mal die Mappe hoch
Gruß
Rudi

Anzeige
AW: Tabelle1!R1C1R" &letzteZeile&"C2" owT
11.03.2015 13:33:33
Sarah
Vielen lieben Dank, der Unterstrich war's!!
Tag gerettet :)
;
Anzeige
Anzeige

Infobox / Tutorial

SourceData in Pivotmakro anpassen


Schritt-für-Schritt-Anleitung

Um das SourceData in einem Pivotmakro mit VBA dynamisch anzupassen, kannst Du folgende Schritte befolgen:

  1. 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
  2. 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
  3. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige