PDA

Vollständige Version anzeigen : Datum in Berichtsfilter in Pivot filtern


martinl15
30.08.2017, 09:47
Hallo zusammen

Ich habe folgendes Problem. Ich habe in einem Registerblatt zwei Felder, in denen man ein von und ein bis Datum eingeben kann. Diese würde ich gerne auslesen und in einer Pivot-Tabelle als Filterwerte für das Datum einsetzen. Solange das Datum in der Zeile steht in der Pivot, funktioniert es, aber als Berichtsfilter kann ich keinen Filter für das Datum zwischen setzen...

Das Datum muss aber als Berichtsfilter definiert sein, da sonst die Werte in der Pivot nicht richtig gruppiert werden.

Hier noch mein Code, falls es weiterhilft:

Sub Datum_zwischen()
'
' Datum_zwischen Makro
'
Dim Datum1 As Date, Datum2 As Date

Datum1 = Worksheets("Übersicht").Range("H2").Value
Datum2 = Worksheets("Übersicht").Range("I2").Value

Worksheets("Pivot").PivotTables("PivotCalc").PivotFields("DATUM").ClearAllFilters
Worksheets("Pivot").PivotTables("PivotCalc").PivotFields("Datum").PivotFilters. _
Add Type:=xlDateBetween, Value1:=CLng(Datum1), Value2:=CLng(Datum2)


'
End Sub

Hat jemand eine Idee, wie man das lösen kann?

Danke
Martin

Heidjer
30.08.2017, 10:15
Hallo Martin,

in einer Testdatei bei mir funktionierte es wie folgt:
Sub Datum_zwischen()
'
' Datum_zwischen Makro
'
Dim Datum1 As String, Datum2 As String

Datum1 = Worksheets("Übersicht").Range("H2").Value
Datum2 = Worksheets("Übersicht").Range("I2").Value

Worksheets("Pivot").PivotTables("PivotCalc").PivotFields("Datum").ClearAllFilters
Worksheets("Pivot").PivotTables("PivotCalc").PivotFields("Datum").PivotFilters. _
Add Type:=xlDateBetween, Value1:=Datum1, Value2:=Datum2


'
End Sub


Ansonsten stell am besten mal eine Beispieldatei von dir zur Verfügung, wo es eben nicht funktioniert wie gewünscht. Dann könnte ich es mir am konkreten Beispiel anschauen.

martinl15
30.08.2017, 10:39
Hallo Heidjer

Habe das mal versucht zu ändern, klappt aber leider nicht. Habe inzwischen eine Alternativ Lösung gefunden, wäre aber trotzdem noch gut zu wissen, wie es funktionieren würde.

Habe dir eine Testdatei nachgebaut, in der es nun nicht funktioniert.

Danke für deine Hilfe.

Martin

Heidjer
30.08.2017, 11:47
Hallo Martin,

ich hatte angenommen, dein Datumsfeld sei ein Zeilenfeld in der Pivot-Tabelle (genau aus dem Grund ist eine Beispieldatei oftmals hilfreich). Ob (und wenn ja, wie) es möglich ist, ein Seitenfeld wie in deiner Datei mit der "DateBetween"-Methode zu filtern kann ich dir leider nicht sagen. Vielleicht weiß da einer der Excel-Profis dieses Forums mehr.

VG

martinl15
30.08.2017, 12:48
okay, hatte ich eigentlich erwähnt in meiner Ursprungsfrage, aber war somit zu wenig klar.

Mal schauen, ob jemand anders hier noch weiterhelfen kann, ansonsten bleibe ich bei meiner Alternativlösung.

Luschi
30.08.2017, 16:14
Hallo martinl15,

die Seitenfeld-Filtereinträge lassen sich per Vba nicht auslesen, wenn sich die Datenquelle aus einer Exceltabelle stammt.
Nur für OLAP-Datenquellen gibt es folgende Auflistung:
ActiveSheet.PivotTables("PivotCalc").PivotFields("DATUM").CurrentPageList
und da könnter man dann in einer For-Schleife alle Einträge abklappern, ob das Datum Von-bis-Bereich liegt.
Excel & OLAP siehe h i e r (https://support.office.com/de-de/article/%C3%9Cbersicht-%C3%BCber-OLAP-Online-Analytical-Processing-15d2cdde-f70b-4277-b009-ed732b75fdd6#bmolap_features_in_microsoft_excel)

Gruß von Luschi
aus klein-Paris

PS: Wenn die Daten in der Tabelle 'Übersicht' nach dem Datum sortiert vorliegen, dann könnte man per Vba den Datenbereich auf den Datumsbereich per dynamischen Bereichsnamen einschränken und dies der Pivottabelle übergeben.