Dynamische Pivot per Makro
#1
Hi zusammen

ich bin gerade dabei mit einem VBA Makro eine Pivot zu erstellen.
"Leider" variiert die Datengrundlage von Mal zu Mal, weswegen ich das Ganze irgendwie dynamisch gestalten muss.
Das kriege ich irgendwie nicht hin.
Hier mein bisheriger Code:

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Datengrundlage!R1C1:R112C29", Version:=xlPivotTableVersion15).CreatePivotTable
        TableDestination:="PivotBlatt!R3C1", TableName:="PivotTable1", _
        DefaultVersion:=xlPivotTableVersion15

Leider weiß ich überhaupt nicht inwiefern man mit Variablen in diesem Befehl arbeiten kann.
Meine bisherigen Versuche lieferten leider nur roten Code und Fehlermeldungen.

Könnt ihr mir weiterhelfen?

Danke!

Schönen Gruß
Top
#2
hallo

schau mal in einem meiner letzten Beiträge, da findest du ein Beispiel
Willie
Top
#3
Hallo,

Dynamisch wäre z.b. eine "Intelligente"  Tabelle
oder
Über den NamensManager -->  Rohdaten= Bereich.verschieben(kopfzeile;;;anzahlZeilen)

PivotDatenQuelle = Name der intelligenten Tabelle   oder  der Name aus NamensManager

Eins von beiden muss gehen , ansonsten solltest du deine Daten aufräumen!
Top
#4
Moin ihr beiden

vielen Dank erstmal für die schnellen Antworten!

@Willie017, leider weiß ich nicht genau, welchen Beitrag du meinst.
Magst du mir einmal den Link hier einfügen?
Danke!

@Dieter63, die Idee mit dem Namensmanager finde ich ganz charmant.
Ich habe nun folgenden Code:

' Erst werden die letzte Zeile und letzte Spalte der Datengrundlage ermittelt
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
letztespalte = Sheets(1).Cells(1, 256).End(xlToLeft).Column

' Jetzt wird der Name für die komplette Range festgelegt
ActiveWorkbook.Names.Add Name:="Datengrundlage", RefersToR1C1:="Datengrundlage!Range(Cells(1,1),Cells(letztezeile, letztespalte))"
ActiveWorkbook.Names("Coois").Comment = ""

' Nun folgt die Erstellung der Pivot
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Datengrundlage", Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:="PivotBlatt!R3C1", TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion15


Leider kommt nach wie vor der Bezug-Fehler.
Muss ich noch irgendwas beachten, wenn ich den Namen der Range als Variable in dem Befehl für die Erstellung der Pivot nutze?

Danke schon mal vorab!

Gruß
Top
#5
Hallo,

Mein Vorschlag ist ohne Makro .
Du musst nur einmal den Namen erstellen -->  z.b. Rohdaten = Bereich.Verschieben($A$1;;;Anzahl2($A:$A);Anzahl2($1:$1))

Der Bereich Rohdaten ist dynamisch d.h. automatisch bei Zeilenänderung oder / und Spaltenänderung passt sich der Bereich an.

PivotQuelle = Rohdaten fertig
Top
#6
Hi Dieter,

danke dir!
Jetzt tut es wie es soll! :)

Gruß
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste