Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Pivot-Filter auf aktuelles Datum festlegen

Pivot-Filter auf aktuelles Datum festlegen
24.02.2016 11:23:07
Lolo
Hallo zusammen,
ich habe aus dem Archiv einen Code gefunden, der in der Pivot-tabelle den Filter auf die aktuelle und zukünftige KW setzt. Diesen habe ich jetzt versucht umzumodelieren auf das aktuelle /zukünftige Datum. Das ganze sieht so aus:
Dim pvTab As PivotTable
Dim pvField As PivotField
Dim pvItem As PivotItem
Application.EnableEvents = False
Application.ScreenUpdating = False
Set pvTab = ActiveSheet.PivotTables("PivotTable1")
Set pvField = pvTab.PageFields("Datum")
pvField.EnableMultiplePageItems = True
pvField.ClearAllFilters
For Each pvItem In pvField.PivotItems
If Val(pvItem.Name) < Date Then
pvItem.Visible = False
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
Allerdings streicht er mir auch das aktuelle Datum und alle anderen weg und es bleibt nix übrig bis eine Fehlermeldung erscheint, dass die Visible-Eigenschaft des PivotItem-Objektes nicht festgelegt werden kann....
Könnte mir jemand einen Tipp geben, woran das liegt, oder ob an dem Code etwas falsch ist?
Vielen Dank im Vorraus!!
Lolo

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Pivot-Filter auf aktuelles Datum festlegen
25.02.2016 08:36:13
fcs
Hallo Lolo,
ich hab da ziemlich rumprobiert.
Unter Excel 2010 hat es nicht funktioniert.
Unter Excel 2016 funktioniert es mit einer Datumsprüfung.
Excel 2013 konnte ich nicht testen.
Ein Problem ist, dass Excel hier im Hintergrund mit US-Datumsformaten arbeitet.
Gruß
Franz
'Getestet unter Excel 2016 (Office 365)
'Funktioniert nicht unter Excel 2010
Sub aaTest()
Dim pvTab As PivotTable
Dim pvField As PivotField
Dim pvItem As PivotItem
Application.EnableEvents = False
Application.ScreenUpdating = False
Set pvTab = ActiveSheet.PivotTables("PivotTable1")
Set pvField = pvTab.PageFields("Datum")
pvField.EnableMultiplePageItems = True
pvField.ClearAllFilters
For Each pvItem In pvField.PivotItems
If IsDate(pvItem.Name) Then
If CDate(pvItem.Name) 

Anzeige
AW: Pivot-Filter auf aktuelles Datum festlegen
29.02.2016 13:05:55
Lolo
Hallo Franz,
Vielen Vielen lieben Dank!!! Unter Excel 2013 funktioniert es so auch wunderbar!!
Die ersten 3 Durchläufe der IF-Schleife werden zwar irgendwie übersprungen ohne das was passiert, aber danach läuft es wie geschmiert weiter, sodas das heutige Datum und (leer) stehen bleibt.
Die "leeren" Zeilen hab ich dann noch so wegbekommen:
For Each pvItem In pvField.PivotItems
IF pvItem = "(blank)" Then
pvItem.Visible = False
End IF
Viele Grüße,
Loreen

Anzeige
AW: Pivot-Filter auf aktuelles Datum festlegen
01.03.2016 09:15:24
Lolo
Hallo Franz,
ich hab mich wohl zu früh gefreut....
ich bin auf ein Problem gestoßen, was mit dem Datumsformat zusammenhängt.
in meiner Liste sind die Daten vom 10.02.2016 bis zum heutigen Datum 01.03.2016 in dieser Form eingetragen.
Wenn ich das Makro durchlaufen lasse, dann zeigt mir das "pvItem.Name" die Werte als:
"2/15/2016"
"2/16/2016"
..........
"2/29/2016"
"3/01/2016" an.
Das "CDate(pvItem.Name)" sieht aber folgendermaßen aus:
02.10.2016
02.11.2016 - mm.dd.yyyy
02.12.2016
\ /
13.02.2016
14.02.2016
.................. - dd.mm.yyyy
29.02.2016
\ /
03.01.2016 - mm.dd.yyyy
er switcht also zwischendrin... kann man das iwie unterbinden?
Denn je nachdem muss dann das heutige Datum eingestellt werden.
Vielen Dank im Vorraus,
Loreen
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pivot-Filter auf aktuelles Datum festlegen in Excel


Schritt-für-Schritt-Anleitung

Um einen Pivot-Filter auf das aktuelle Datum in Excel festzulegen, kannst Du den folgenden VBA-Code verwenden. Dieser Code funktioniert in Excel-Versionen ab 2013, insbesondere in Excel 2016:

Sub SetPivotFilterToCurrentDate()
    Dim pvTab As PivotTable
    Dim pvField As PivotField
    Dim pvItem As PivotItem
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Set pvTab = ActiveSheet.PivotTables("PivotTable1")
    Set pvField = pvTab.PageFields("Datum")

    pvField.EnableMultiplePageItems = True
    pvField.ClearAllFilters

    For Each pvItem In pvField.PivotItems
        If IsDate(pvItem.Name) Then
            If CDate(pvItem.Name) < Date Then
                pvItem.Visible = False
            End If
        End If
    Next pvItem

    ' Unsichtbare "(blank)"-Items entfernen
    For Each pvItem In pvField.PivotItems
        If pvItem = "(blank)" Then
            pvItem.Visible = False
        End If
    Next pvItem

    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Dieser Code filtert alle Datumswerte, die vor dem heutigen Datum liegen, aus der Pivot-Tabelle heraus.


Häufige Fehler und Lösungen

  1. Fehlermeldung: "Visible-Eigenschaft kann nicht festgelegt werden"

    • Dieser Fehler tritt auf, wenn alle Items in der Pivot-Tabelle unsichtbar gemacht werden. Stelle sicher, dass mindestens ein Item (z.B. das heutige Datum) sichtbar bleibt.
  2. Datumsformat-Probleme

    • Wenn Du unterschiedliche Datumsformate in Deiner Liste hast (z.B. mm.dd.yyyy und dd.mm.yyyy), kann dies zu Problemen führen. Überprüfe, ob alle Datumsangaben einheitlich formatiert sind. Du kannst den Code anpassen, um die Formate zu konvertieren.

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch die Filterfunktionen direkt in Excel nutzen:

  1. Wähle die Pivot-Tabelle aus.
  2. Klicke auf den Dropdown-Pfeil im Datumsfeld.
  3. Wähle "Datumsfilter" und dann "Heute" aus.

Diese Methode ist jedoch weniger flexibel als die VBA-Lösung.


Praktische Beispiele

Angenommen, Du hast eine Pivot-Tabelle mit Verkaufsdaten und möchtest nur die Daten ab dem heutigen Datum anzeigen:

  1. Füge den oben genannten VBA-Code in ein Modul in Deiner Arbeitsmappe ein.
  2. Stelle sicher, dass das Datumsfeld korrekt benannt ist.
  3. Führe das Makro aus, um die Filter anzuwenden.

Das Ergebnis ist eine Pivot-Tabelle, die nur die zukünftigen Verkaufsdaten anzeigt.


Tipps für Profis

  • VBA-Fehlerbehebung: Nutze Debug.Print innerhalb des Codes, um zu sehen, welche Werte in der Schleife durchlaufen werden. So kannst Du den Fehler schneller identifizieren.
  • Datumsformatierung: Stelle sicher, dass alle Datumswerte in Deiner Datenquelle einheitlich sind. Erwäge die Verwendung von Datumsformatierungen in Excel, um dies zu gewährleisten.
  • Regelmäßige Updates: Wenn Du regelmäßig mit Pivot-Tabellen arbeitest, erwäge, das Makro einer Schaltfläche zuzuweisen, um den Filter schnell anzuwenden.

FAQ: Häufige Fragen

1. Warum funktioniert der Code nicht in Excel 2010? Der Code nutzt Funktionen, die in Excel 2010 nicht unterstützt werden. Daher ist es ratsam, auf eine neuere Version wie Excel 2013 oder 2016 umzusteigen.

2. Wie kann ich das Datumsformat in Excel ändern? Du kannst das Datumsformat über die Zellenformatierung ändern. Wähle die Zellen aus, gehe zu "Start" > "Zahlenformat" und wähle das gewünschte Datumsformat aus.

3. Gibt es eine Möglichkeit, die Filter bei Bedarf zurückzusetzen? Ja, Du kannst eine zusätzliche Schaltfläche oder ein Makro erstellen, das alle Filter in der Pivot-Tabelle zurücksetzt, indem Du pvField.ClearAllFilters aufrufst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige