Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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ß
Antworten Top
#2
hallo

schau mal in einem meiner letzten Beiträge, da findest du ein Beispiel
Willie
Antworten 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!
Antworten 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ß
Antworten 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
Antworten Top
#6
Hi Dieter,

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

Gruß
Antworten Top


Gehe zu:


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