Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pivot per Makro erstellen

Pivot per Makro erstellen
06.10.2020 11:03:00
Matthias
Hallo zusammen,
ich möchte meine per VBA erstellte Excel-Datei etwas anschaulicher gestalten,
ich habe eine Pivot per Makrorekorder erstellt und den Code bereits angepasst, damit die Pivotauch bei variabler Zeilenanzahl erstellt wird:
     ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Ebene1!A1:D" & o1 - 1, Version:=6).CreatePivotTable TableDestination:= _
"Ebene1!R6C6", TableName:="PivotTable8", DefaultVersion:=6
Sheets("Ebene1").Select
Cells(6, 6).Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Ebene1!$F$6:$H$23")
With ActiveChart.PivotLayout.PivotTable.PivotFields("Pos. auf Tour")
.Orientation = xlRowField
.Position = 1
End With
ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
PivotTable.PivotFields("Weg pro Position"), "Summe von Weg pro Position", xlSum
With ActiveChart.PivotLayout.PivotTable.PivotFields( _
"Summe von Weg pro Position")
.Caption = "Mittelwert von Weg pro Position"
.Function = xlAverage
End With

Nun hätte ich gerne die Chart und nicht die Tabelle auf Destination: Ebene1!R6C6
Die Tabelle ist gar nicht notwendig und könnte prinzipiell gelöscht werden.
Desweiteren müsste der Part ActiveChart.SetSourceData Source:=Range("Ebene1!$F$6:$H$23")
auch noch flexibel gestaltet werden, wenn ich unterschiedlich viele Einträge hab, ist das richtig?
Wie kann ich das an der Stelle verändern?
Liebe Grüße

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot per Makro erstellen
08.10.2020 08:37:46
Matthias
Sorry für den Spam, aber ich wollte den Beitrag mal wieder etwas weiter oben plaatziert sehen.
In der Hoffnung, dass mir jemand dabei helfen kann
LG
AW: Pivot per Makro erstellen
08.10.2020 14:40:29
fcs
Hallo Mathias,
ohne die Tabelle kannst du das Diagramm nicht erstellen.
Den Pivotbericht solltest du also in einer Zelle starten, in der es nicht stört.
Das Positionieren des Diagramms wird "einfacher", wenn man mit passenden Objekt-Variablen arbeitet.
Dann wird das Zuweisen von Eigenschaften einfacher.
Nachfolgend hab ich ein Makro so aufbereitet, dass es mit den Namen für Tabellenblatt und Feld wie in deinem Beispiel funktionieren sollte.
LG
Franz
Sub MakePivotDiag()
' MakePivotDiag Makro
Dim o1 As Long
Dim wksData As Worksheet
Dim pvTab As PivotTable
Dim objChartObj As ChartObject, objChart As Chart
Set wksData = ActiveWorkbook.Worksheets("Ebene1")
With wksData
'letzte Zeile mit Inhalt in Spalte A
o1 = .Cells(.Rows.Count, 1).End(xlUp).Row
'Pivot-Tabellenbericht anlegen
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
.Range(.Cells(1, 1), .Cells(o1 - 1, 4)), Version:=6).CreatePivotTable TableDestination:= _
_
.Range("K1"), TableName:="PivotTable1", DefaultVersion:=6
'Pivot-Tabellenbericht der variablen zuordnen
Set pvTab = .PivotTables(1)
With pvTab
'Grundeinstellungen des Pivot-tabellenberichts
.HasAutoFormat = True
.DisplayErrorString = False
.DisplayNullString = True
.EnableDrilldown = True
.ErrorString = ""
.MergeLabels = False
.NullString = ""
.PageFieldOrder = 2
.PageFieldWrapCount = 0
.PreserveFormatting = True
.ColumnGrand = False
.RowGrand = False
.SaveData = True
.PrintTitles = False
.RepeatItemsOnEachPrintedPage = True
.TotalsAnnotation = False
.CompactRowIndent = 1
.InGridDropZones = False
.DisplayFieldCaptions = True
.DisplayMemberPropertyTooltips = False
.DisplayContextTooltips = True
.ShowDrillIndicators = True
.PrintDrillIndicators = False
.AllowMultipleFilters = False
.SortUsingCustomLists = True
.FieldListSortAscending = False
.ShowValuesRow = False
.CalculatedMembersInFilters = False
.RowAxisLayout xlCompactRow
With .PivotCache
.RefreshOnFileOpen = False
.MissingItemsLimit = xlMissingItemsNone
End With
.RepeatAllLabels xlRepeatLabels
'Zeilenfeld anlegen
With .PivotFields("Pos. auf Tour")
.Orientation = xlRowField
.Position = 1
End With
'Datenfeld mit Funktion Mittelwert anlegen
.AddDataField .PivotFields("Weg pro Position"), "Mittelwert von Weg pro Position", _
xlAverage
'zahlenformat des Datenfelds festlegen
With .PivotFields("Mittelwert von Weg pro Position")
.NumberFormat = "0.0"
End With
End With
'Diagramm im Tabellenblatt anlegen
.Shapes.AddChart2 201, xlColumnClustered
Set objChartObj = .ChartObjects(1)
End With
Set objChart = objChartObj.Chart
objChart.SetSourceData Source:=pvTab.DataBodyRange  'Range("Ebene1!$H$1:$I$5")
With objChartObj
.Top = wksData.Cells(6, 6).Top
.Left = wksData.Cells(6, 6).Left
.Width = 600
.Height = 400
End With
End Sub

Anzeige
AW: Pivot per Makro erstellen
09.10.2020 08:40:21
Matthias
Hallo Franz,
hab 1000 Dank, der Code ist perfekt und verständlich.
Vielleicht schaffe ich es sigar bei den nächsten malen mir den umzubasteln.
Schönen Tag und LG
Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige