Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1568to1572
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Filter bei Pivot-Tabellen über VBA

Filter bei Pivot-Tabellen über VBA
26.07.2017 20:23:30
Stefan
Hallo Zusammen,
ich hoffe Ihr könnt mir einmal mehr helfen.
Folgendes:
Ich habe eine Pivot-Tabelle mit mehreren Daten (aus mehreren Monaten - Umsatz, Kosten etc.).
Ich benötige einen VBA-Code, der im Filter der Monate immer nach dem einem bestimmten Monat sucht, den ich im Code entsprechend festlege. Bspw. Juni.
Bei jedem neuen Monat gibt es eine neue Datei.
Ich würde dann nur den Code kopieren und entsprechend Juni in Juli verwandeln.
Später vielleicht auch mehrere Monate.
Könnt Ihr mir dabei bitte helfen?
Wenn ich es über den Rekorder versuche, gibt er mir immer nur die anderen "Monate = False" aus, aber nie den Monat der schlicht "true" sein soll, so dass ich letztlich nur den aktuellen Monat ändern müsste.
Oder gibt es sogar noch eine schickere Lösung, wie bspw. ein Eingabefeld?
Bin leider nicht so stark in VBA-Programmierung und hoffe es war einigermaßen verständlich.
Vielen Dank für eure Hilfe.
Ich wäre Euch sehr dankbar für gute Ideen.
Beste Grüße und schönen Abend
Stefan

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Würde Dir da nicht ein Datenschnitt reichen?
27.07.2017 10:43:07
Michael
Hallo Stefan!
Schau Dir doch mal die Pivot-Funktion "Datenschnitt" an - da brauchst Du gar kein VBA und kannst per Klick die jeweiligen Monatsdaten anzeigen lassen (sofern die Pivot-/Datenstruktur passt).
LG
Michael
AW: Würde Dir da nicht ein Datenschnitt reichen?
27.07.2017 17:07:59
Stefan
Hallo Michael,
erstmal vielen Dank für deinen Vorschlag.
Leider geht es beim Datenschnitt nicht ganz um das wonach ich letztendlich Suche. Aber vielleicht kannst Du mir bei untenstehendem Code weiterhelfen.
Wenn ich der Pivot-Tabelle über den VBA-Code sagen möchte er soll mir bspw. aus der Monatsauswahl Januar, Februar, März und April nur den Februar wiedergeben soll und ich das über den Rekorder aufzeichne kommt folgendes Ergebnis:
ActiveSheet.PivotTables("PivotTable3").PivotFields("Monat").CurrentPage = _
"(All)"
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Monat")
.PivotItems("Januar").Visible = False
.PivotItems("März").Visible = False
.PivotItems("April").Visible = False
End With
Die Bedeutung ist klar, es werden alle Kriterien ausgeschlossen mit False bzw. wo keine Haken beim aufzeichnen gesetzt wurden.
Geht das auch andersherum, dass ich im Code sagen kann suche nur das Kriterium Februar?
So etwas wäre super und würde mich sehr viel weiterbringen.
Besten Dank!!
Grüße
Stefan
Anzeige
AW: Würde Dir da nicht ein Datenschnitt reichen?
01.08.2017 09:54:31
Michael
Hallo!
es werden alle Kriterien ausgeschlossen mit False bzw. wo keine Haken beim aufzeichnen gesetzt wurden. Geht das auch andersherum, dass ich im Code sagen kann suche nur das Kriterium Februar?
Das Prinzip ist in beiden Fällen das Gleiche, wie auch schon von Dir (per Makrorekorder) aufgezeigt: Geh alle PivotItems des jeweiligen PivotFelds durch und setze entsprechend True oder False. Das sieht dann als gesäuberter, erweiterter Makro-Rekorder-Code so aus (schematisch, Blattname noch anpassen):
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle2")
Dim p As PivotTable: Set p = Ws.PivotTables("PivotTable3")
Dim f As PivotField: Set f = p.PivotFields("Monat")
Dim i As PivotItem, s$
s = "Februar"
With f
For Each i In .PivotItems
If i.Name  s Then
i.Visible = False
Else:
i.Visible = True
End If
Next
End With
End Sub
Kommst Du damit hin?
LG
Michael
Anzeige
AW: Würde Dir da nicht ein Datenschnitt reichen?
01.08.2017 11:00:58
Stefan
Hallo Michael,
das ist schon sehr gut.
Vielen Dank Dir.
Kannst Du mir noch sagen, wie eine Mehrfachauswahl aussehen könnte, wenn ich bspw. neben dem Februar, auch noch den Januar und den August im Filter haben möchte?
Ich habe zwar etwas rumprobiert, aber leider nicht hinbekommen.
Vielen Dank.
Beste Grüße
Stefan
AW: Würde Dir da nicht ein Datenschnitt reichen?
01.08.2017 11:18:11
Stefan
Und wenn ich für weitere Pivot-Felder filtern möchte, dann ist letztlich nur oben einzutragen bspw.
Dim z As PivotField: Set z = p.PivotFields("Region")
Und den Code entsprechend anzupassen?
Danke nochmal!!
AW: Würde Dir da nicht ein Datenschnitt reichen?
01.08.2017 11:24:09
Michael
Hallo!
Bzgl. einer mehrfachen Monatsauswahl (wie bspw. Januar, Februar, August) würde ich den Code leicht modifizieren, etwa:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle2")
Dim p As PivotTable: Set p = Ws.PivotTables("PivotTable3")
Dim f As PivotField: Set f = p.PivotFields("Monat")
Dim i As PivotItem
With f
For Each i In .PivotItems
Select Case i.Name
Case Is = "Januar", "Februar", "August"
i.Visible = True
Case Else
i.Visible = False
End Select
Next
End With
End Sub
Zu Deiner zweiten Frage: Ja!
LG
Michael
Anzeige
AW: Würde Dir da nicht ein Datenschnitt reichen?
02.08.2017 15:06:56
Stefan
Hallo Michael,
das klappt überragend!
Perfekt!
Vielen Dank Dir für die Mühe!
Beste Grüße
Stefan

172 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige