AW: Pivottabellen Filter anpassen
22.02.2013 14:22:23
JACKD
Jaein..
Ich würde vorschlagen, du startest mal den Makrorekorder und erstellst eine Pivot nach deinen Vorstellungen. Und exemplarisch wählst du dann den Filter aus.
Dann schaust du dir das Makro an, und suchst dir die Stelle mit dem Filter...
Sub Pivot()
' Pivot
Dim LZeile As Long, LSpalte As Long, Alter As Integer
Dim x As String
Dim wks As Worksheet
'"globale" Variable
LZeile = Worksheets("Master").Cells(Rows.count, 1).End(xlUp).Row
LSpalte = Worksheets("Master").Cells(1, Columns.count).End(xlToLeft).Column
'Pivot1
'Variablen Festlegen
x = "Pivot1"
' Abfrage ob Blatt existiert
For Each wks In Worksheets
If wks.name = x Then
Application.DisplayAlerts = False
Worksheets(x).Delete
Application.DisplayAlerts = True
End If
Next wks
'Blatt erstellen
Sheets.Add after:=Worksheets("Pivot0")
ActiveSheet.name = x
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Master!R1C1:R" & LZeile & "C" & LSpalte & "", Version:=xlPivotTableVersion14). _
CreatePivotTable _
TableDestination:="" & x & "!R3C1", TableName:=x, _
DefaultVersion:=xlPivotTableVersion14
'Zeilenbeschriftung
With Worksheets(x).PivotTables(x).PivotFields("Nummer")
.Orientation = xlRowField
.Position = 1
End With
'Spalte Fälle
Worksheets(x).PivotTables(x).AddDataField _
Worksheets(x).PivotTables(x).PivotFields("Rechnungen"), "Anzahl", xlCount
'Spalte D
Worksheets(x).PivotTables(x).AddDataField _
Worksheets(x).PivotTables(x).PivotFields("Dauer"), "D", xlSum
With Worksheets(x).PivotTables(x).PivotFields("MvD")
.Caption = "D" & vbCrLf & "[d]"
.Function = xlAverage
.NumberFormat = "0.00"
End With
' Spalte Belegtage
Worksheets(x).PivotTables(x).AddDataField _
Worksheets(x).PivotTables(x).PivotFields("Tage"), "BT", xlSum
With Worksheets(x).PivotTables(x).PivotFields("BT")
.Caption = "BT" & vbCrLf & "[d]"
.Function = xlSum
.NumberFormat = "0"
End With
'Filter 1 (KA)
With Worksheets(x).PivotTables(x).PivotFields("Rechnung")
.Orientation = xlPageField
.Position = 1
.PivotItems("KA").Visible = False
End With
'Filter Alter(
so oder so ähnlich kann es dann aussehen wenn man das bissl bearbeitet hat.
Im zweifel einfach mit dem Code nochmal nachfragen =)
Grüße