Clever-Excel-Forum

Normale Version: VBA - Daten einer Pivot Tabelle eingrenzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag meine Lieben,

Ich habe eine sehr große Excel Tabelle mit Umsätzen, Absatzmenge etc.
Hierfür haben wir mehrere Pivot Tabellen die Daten extern bekommen.
Ich würde gerne automatisieren, dass sich das Datum zum aktuellen Tag verändert.
Das funktioniert mit dem Code auch sehr gut, dauert allerdings bei der Datenmenge unglaublich lange.
Code:
Option Explicit
Sub Test_3()

Tabelle1.Range("C2").Value = Date

Dim pvtF As PivotField
Dim pvtI As PivotItem

Set pvtF = Worksheets("Tabelle1").PivotTables("PivotTable1").PivotFields("[Zeit].[Jahr-Monat-Datum].[Jahr]")

For Each pvtI In pvtF.PivotItems
    If DateValue(pvtI.Name) = Range("C2").Value2 Then
        pvtI.Visible = True
    Else
        pvtI.Visible = False
    End If
Next pvtI

End Sub

Hätte jemand einen Tipp, wie ich die Datenmenge eingrenzen könnte oder es weiter optimieren könnte?
Also dass ich mit dem Loop zum Beispiel erst im Jahr 2021 anfange.
Wäre für jede Hilfe sehr dankbar :) 
Gruß
Felix  Blush
Hi

Verstehe dein Vorgehen noch nicht.
Warum ist es denn nicht möglich die Pivot einfach nach dem Datum zu filtern? 
Evtl. eine kleine Bsp. Datei.

Gruß Elex
Hallöchen,

direkt geht das nicht? Im Prinzip

...PivotItems(Date).Visible = False
Es ist möglich, dass man einfach manuell nach dem Datum filtert.
Aber da es sich um viele Pivot Tabellen handelt und der Arbeitsschritt täglich der gleiche ist, würde ich das gerne automatisieren mit Hilfe von VBA.

Wenn man in der Testdatei das Makro ausführt, funktioniert es zwar, aber dauert ewig.
Und in meinem Test wird nur ein kleiner Bruchteil der Daten genutzt.

Ich würde gerne den Bereich eingrenzen, dass das Makro nur zwischen dem 01.01.2021 und dem 31.12.2021 nach dem richtigen Datum sucht.
Deine Testdaten sind "komisch", da sind Daten bis 2050 drin. Außerdem sehe ich nur eine "implizite" Verwendung des Datenmodells. Warum bereitest Du die Verwendung der Daten nicht vor? 

Aber diese Bemerkung ist interessant
Zitat:Aber da es sich um viele Pivot Tabellen handelt und der Arbeitsschritt täglich der gleiche ist, würde ich das gerne automatisieren mit Hilfe von VBA.

Man kann einen Datenschnitt anlegen und diesen mit den "vielen" Pivottabellen verbinden, also ein Filter für alle Pivottabellen
Hallo

Also wenn du den Filter nur auf ein Datum setzen möchtest, versuche es so.
Code:
ActiveSheet.PivotTables("PivotTable2").PivotCache.Refresh
ActiveSheet.PivotTables("PivotTable2").PivotFields("Datum").CurrentPage = Date
ActiveSheet.PivotTables("PivotTable2").PivotCache.Refresh

Gruß Elex