AW: Pivotdatenauswahl automatisch
12.03.2008 02:29:00
fcs
Hallo Kerstin,
ich hab mal mit Excel97 versucht dein Problem zu lösen.
Lösung 1: Die Daten werden mit einem Datumsbereich gruppiert, das hat bei mir funktiniert. Die Daten werden dann nach Monaten und Tagen gruppiert.
Lösung 2: Nachdem alle Einträge eingebledet sind werden die alten Einträge ausgeblendet.
Leider funktioniert das Einblenden der Einträge bei mir aus unbekanntem Grund in der Datei nicht.
Zeichne mit dem Makrorecorder unter Excel 2003 das Einblendne aller Zeilen für ein Pivot-Feld auf. ggf. kannst du dann den Code an passender Stelle anpassen.
Gruß
Franz
Sub PivotGruppierenLetzte30()
'Daten in Pivottabelle Gruppieren
'Gruppierng nach Monat-Tag für die letzten 30 Tage
Dim ws As Worksheet, PT As PivotTable
Set ws = Worksheets("Tabelle1")
'Datenbereich der Pivottabelle aktualisieren
Set PT = ActiveSheet.PivotTables(1)
PT.SourceData = "'" & ws.Name & "'!Z1S1:Z" & _
ws.Cells(ws.Rows.Count, 1).End(xlUp).Row & "S2"
PT.RefreshTable
PT.PivotSelect "Fakturadatum[All]", xlLabelOnly
Selection.Group Start:=(Date) - 30, End:=(Date), Periods:=Array(False, False, _
False, True, True, False, False)
PT.PivotFields("Monate").AutoSort xlDescending, "Monate"
Range("A1").Select
Set ws = Nothing: Set PT = Nothing
End Sub
Sub GruppierungAufheben()
ActiveSheet.PivotTables(1).PivotSelect "Fakturadatum[All]", _
xlLabelOnly
Selection.Ungroup
ActiveSheet.PivotTables(1).PivotSelect "", xlOrigin
End Sub
Sub PivotAusblendenAelter30()
' Datumsangaben älter 30 Tage ausblenden
Dim ws As Worksheet, PT As PivotTable, iI As Integer, PI As PivotItem, PF As PivotField
Set ws = Worksheets("Tabelle1")
Set PT = ActiveSheet.PivotTables(1)
'Datenbereich der Pivottabelle aktualisieren
PT.SourceData = "'" & ws.Name & "'!Z1S1:Z" & _
ws.Cells(ws.Rows.Count, 1).End(xlUp).Row & "S2"
PT.RefreshTable
Application.ScreenUpdating = False
Set PF = PT.PivotFields("Fakturadatum")
With PF
'Alle ausgeblendenten Werte anzeigen (funktioniert leider unter Excel 97 nicht)
For Each PI In .HiddenItems
PI.Visible = True
Next
'Alte Werte ausblenden
For Each PI In .VisibleItems
If CDate(PI.Name)