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

Forumthread: Pivotfilter per Zelle steuern

Pivotfilter per Zelle steuern
30.08.2013 08:52:30
Tom
Moinsen alle,
gibt es einen Code mit dem man den Pivot Datumsfilter "liegt zwischen" steuern könnte?
Mit folgendem Code geht es schon in die richtige Richtung Pivotfelder anzusteuern, aber wie könnte man es auf den Datumsfilter anwenden?
Folgender Code liegt vor:
Private Sub Worksheet_Change(ByVal Target As Range)
Call PivAendern
End Sub
Sub PivAendern()
With Sheets("Top Peak").PivotTables(1)
.PivotFields("Nr").CurrentPage = Sheets("Mopti").[Y1].Value
.PivotCache.Refresh
End With
End Sub Filter sollte dann hier eingreifen:
.PivotFields("Buchungsdatum").CurrentPage
Hab jetzt gerade keine Bsp.Mappe zur Hand.
Aber vielleicht habt Ihr ja schon eine Idee!
MfG
Tom H.

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivotfilter per Zelle steuern
30.08.2013 09:09:50
selli
hallo tom,
das ist so eine sache mit den pivots.
ich habe jetzt zwar nicht die lösung für deine konkrete aufgabenstellung, habe es selber aber anders gelöst.
ich habe in der ursprungstabelle eine hilfsspalte eingefügt. hier setze ich in den betreffenden zeilen ein zeichen (z.bsp. "x"), und setze diese spalte in den bereichsfilter der pivot.
in der hilfsspalte die zeichen per vba zu setzen und dann die pivot zu refreshen ist sicherlich einfacher zu realisieren als in der pivot herumzudoktoren.
gruß
selli

Anzeige
AW: Pivotfilter per Zelle steuern
30.08.2013 09:44:24
Tom
Hi Selli,
das ist mir zu einfach.
Ich suche nach einer "unsichtbaren" Lösung ! :-)
Folgender aufgenommener Code funzt sehr gut aber:
Sub PivAendern1()
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Buchungsdatum")
.Orientation = xlRowField
.Position = 3
End With
ActiveSheet.PivotTables("PivotTable1").PivotFields("Buchungsdatum"). _
PivotFilters.Add Type:=xlDateBetween, Value1:="28.02.2013", Value2:= _
"31.12.2013"
End Sub
aber: ich möchte die Value Werte ersetzen mit
Value1:= Sheets("Mopti").[Y1].Value
Value2:= Sheets("Mopti").[AB1].Value
gibt noch Fehler 400 zurück!
Und gerne das hier umgehen damit ich nicht erst navigieren muss:
.Orientation = xlRowField
.Position = 3
Vielen Dank schon einmal für weitere Hilfe.
Gruß
Tom H.

Anzeige
Mein Ansatz: Benanntes Argument nicht gefunden !
30.08.2013 10:23:28
Tom
Hier mein Ansatz.
Läuft durch, aber am Ende: Benanntes Argument nicht gefunden !
Sub PivAendern()
With Sheets("Top Peak").PivotTables(1).PivotFields("Buchungsdatum")
.Orientation = xlRowField
.Position = 3
.PivotFilters.Add Type:=xlDateBetween, Value1:=Sheets("Mopti").[Y1], Value2:=Sheets(" _
Mopti").[AB1]
.PivotCache.Refresh
End With
End Sub
Höre gern
Tom H.

Anzeige
AW: Mein 2ter Versuch = Objekt Erforderlich
30.08.2013 11:45:47
Tom
Moinsen,
mein 2ter Ansatz gibt mir "Objekt Erforderlich" zurück-
Sub PivAendern2()
Dim cd As Date
Dim cd1 As Date
cd = System.Today().AddMonths(-6)
cd1 = System.Date.Today
ActiveSheet.PivotTables("PivotTable1").PivotFields("Buchungsdatum").PivotFilters.Add Type:= _
xlDateBetween, _
Value1:=cd, Value2:=cd1
End Sub
Freue wenn Ihr mir beim Lösen helfen könnt.
MfG
Tom H.

Anzeige
AW: Mein 2ter Versuch = Objekt Erforderlich
30.08.2013 13:15:12
fcs
Hallo Tom,
Datumswerte sind in Filtern oft problematisch und müssen in eine Zahlenwert überführt werden. Typ Double oder Long.
Vor dem setzen eines Filters sollte der entsprechende Filter des Pivotfeldes zurückgesetzt werden.
Gruß
Franz
Sub PivAendern()
Dim pvTab As PivotTable, pvField As PivotField
Set pvTab = Sheets("Top Peak").PivotTables(1)
Set pvField = pvTab.PivotFields("Buchungsdatum")
pvTab.RefreshTable
With pvField
'        .Orientation = xlRowField 'nicht erforderlich wenn Zeilenfeld schon plaziert
'        .Position = 3             'nicht erforderlich wenn Zeilenfeld schon plaziert
.ClearAllFilters
.PivotFilters.Add Type:=xlDateBetween, _
Value1:=CDbl(Sheets("Mopti").Range("Y1").Value), _
Value2:=CDbl(Sheets("Mopti").Range("AB1").Value)
End With
End Sub

Anzeige
AW: Mein 2ter Versuch = Objekt Erforderlich
30.08.2013 13:40:34
Tom
Hallo Franz,
vielen Dank für den Code und den Tip bzgl. Umwandeln in Zahlenwerte.
Das wird mir in Zukunft helfen.
Ich habe parallel noch eine andere Frage laufen derer ich auch nicht Herr werde.
Guck mal bitte rein wenn Du Zeit hast!
siehe: Summeprodukt und "Min" statt "Summe"!
Ist im Prinzip die Pivot-Idee als Formel.
Nur weiß ich noch nicht was von beiden besser in der Handhabung ist.
MfG
Tom
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pivotfilter per Zelle steuern in Excel


Schritt-für-Schritt-Anleitung

Um einen Pivotfilter in Excel per Zelle zu steuern, kannst du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es dir, den Datumsfilter "liegt zwischen" mit Werten aus bestimmten Zellen zu verknüpfen.

  1. Öffne das Excel-Dokument, das die Pivot-Tabelle enthält.

  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Füge das folgende Skript in ein neues Modul ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Call PivAendern
    End Sub
    
    Sub PivAendern()
       Dim pvTab As PivotTable
       Dim pvField As PivotField
    
       Set pvTab = Sheets("Top Peak").PivotTables(1)
       Set pvField = pvTab.PivotFields("Buchungsdatum")
    
       pvTab.RefreshTable
       With pvField
           .ClearAllFilters
           .PivotFilters.Add Type:=xlDateBetween, _
           Value1:=CDbl(Sheets("Mopti").Range("Y1").Value), _
           Value2:=CDbl(Sheets("Mopti").Range("AB1").Value)
       End With
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Ändere die Werte in den Zellen Y1 und AB1 auf dem Blatt "Mopti", um den Pivotfilter zu aktualisieren.


Häufige Fehler und Lösungen

  • Fehler 400: Dieser Fehler tritt häufig auf, wenn die Werte in den Zellen Y1 oder AB1 nicht korrekt formatiert sind. Stelle sicher, dass die Zellen Datumswerte enthalten.

  • Objekt Erforderlich: Dieser Fehler kann auftreten, wenn das PivotTable-Objekt nicht richtig zugewiesen wurde. Überprüfe den Namen der Pivot-Tabelle und die Namen der Blätter in deinem Excel-Dokument.

  • Benanntes Argument nicht gefunden: Achte darauf, dass die Filterparameter korrekt geschrieben sind und dass die PivotField-Objekte existieren.


Alternative Methoden

Falls du eine "unsichtbare" Lösung suchst, kannst du die Filterwerte auch in einer Hilfsspalte setzen, anstatt sie direkt in die Pivot-Filter einzufügen. Füge eine Hilfsspalte in deiner Ursprungstabelle hinzu und verwende diese, um die Filter zu steuern. Dies kann mit VBA erreicht werden, indem du den Wert in der Hilfsspalte setzt und dann die Pivot-Tabelle aktualisierst.


Praktische Beispiele

  1. Um einen Pivotfilter mit Zellen zu verknüpfen, kannst du den oben genannten Code anpassen, um verschiedene Datenquellen zu nutzen. Zum Beispiel:

    Value1:=Sheets("Mopti").[C1].Value
    Value2:=Sheets("Mopti").[D1].Value

    Hierbei werden die Werte aus den Zellen C1 und D1 verwendet.

  2. Ein weiteres Beispiel wäre die Verwendung von Datumswerten, die automatisch auf das aktuelle Datum eingestellt werden:

    Value1:=Date - 30 'Vor 30 Tagen
    Value2:=Date       'Heute

Tipps für Profis

  • Verwende Named Ranges: Anstatt feste Zellreferenzen zu verwenden, kannst du benannte Bereiche verwenden, um deine VBA-Formeln klarer und flexibler zu gestalten.

  • Regelmäßiges Refreshen: Stelle sicher, dass du die Pivot-Tabelle regelmäßig aktualisierst, insbesondere nach Änderungen in den Daten.

  • Fehlerprotokollierung: Implementiere eine Fehlerbehandlungsroutine in deinen VBA-Skripten, um besser nachzuvollziehen, wo Probleme auftreten können.


FAQ: Häufige Fragen

1. Wie kann ich einen Pivotfilter aus einer Zelle steuern?
Du kannst VBA verwenden, um den Pivotfilter mit den Werten aus bestimmten Zellen zu verknüpfen, wie im obigen Code beschrieben.

2. Welche Excel-Version wird benötigt?
Die beschriebenen Methoden und VBA-Codes sind in den neueren Versionen von Excel (ab Excel 2010) anwendbar. Stelle sicher, dass du die richtige Version hast, um die VBA-Skripte auszuführen.

3. Kann ich mehrere Filter gleichzeitig anwenden?
Ja, du kannst mehrere PivotFilters in derselben Sub-Prozedur hinzufügen. Stelle sicher, dass du die Filter korrekt definierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige