AW: Aufruf einer Pivot-Tabelle mit variablem Blattname
14.03.2018 04:23:51
fcs
Hallo Reiner,
mit den folgenden Anpassungen wird sowohl die Quelle variabel als auch das Einfügen eines Tabellenblatts für den Pivot-Bericht.
Die zusätzlichen Zeilen für Optionen und Formatierungen der einzelnen Pivot-Felder kannst du ja wieder rausschmeißen wenn sie nicht gefallen.
Allerdings solltest du das Feld "Konto-Nummer" nicht im Datenbereich einbauen, sondern in den Zeilenbereich.
Gruß
Franz
Option Explicit
Sub Make_Pivot_Bericht()
Dim wks As Worksheet, wksPivot As Worksheet
Dim pvTab As PivotTable, pvField As PivotField
Dim Zeile_L As Long
Set wks = ActiveSheet
Application.ScreenUpdating = False
Set wksPivot = ActiveWorkbook.Worksheets.Add(After:=wks)
' wksPivot.Name = "AW " & wks.Name
With wks
Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"'" & .Name & "'!R4C1:R10C" & Zeile_L).CreatePivotTable _
TableDestination:="'" & wksPivot.Name & "'!R3C1"
End With
Set pvTab = wksPivot.PivotTables(1)
ActiveWorkbook.ShowPivotTableFieldList = True 'Kann man weglassen
With pvTab
' .RowAxisLayout xlOutlineRow 'Gliederungsansicht
.RowAxisLayout xlTabularRow 'Tabellenansicht
Set pvField = .PivotFields("Kontobezeichnung")
With pvField
.Orientation = xlRowField
.Position = 1
.LayoutBlankLine = True 'Leerzeile nach jeder Kontobezeichnung
End With
Set pvField = .PivotFields("Konto-Nummer")
With pvField
.Orientation = xlRowField
.Position = 2
.Subtotals = Array(False, False, False, False, False, False, False, _
False, False, False, False, False)
End With
Set pvField = .PivotFields("Datum")
With pvField
.Orientation = xlRowField
.Position = 3
.Subtotals = Array(False, False, False, False, False, False, False, _
False, False, False, False, False)
End With
Set pvField = .PivotFields("Beleg")
With pvField
.Orientation = xlRowField
.Position = 4
.Subtotals = Array(False, False, False, False, False, False, False, _
False, False, False, False, False)
End With
Set pvField = .PivotFields("Buchungstext")
With pvField
.Orientation = xlRowField
.Position = 5
.Subtotals = Array(False, False, False, False, False, False, False, _
False, False, False, False, False)
End With
Set pvField = .AddDataField(.PivotFields("Betrag"), _
"Summe von Betrag", xlSum)
With pvField
.NumberFormat = "#,##0.00;-#,##0.00;0.00;@"
End With
Set pvField = .AddDataField(.PivotFields("Gesamtsumme"), _
"Summe von Gesamtsumme", xlSum)
With pvField
.NumberFormat = "#,##0.00;-#,##0.00;0.00;@"
End With
End With
With wksPivot
.Columns(3).AutoFit 'Datumsspalte
End With
Application.ScreenUpdating = True
End Sub