Filtern mehrerer Pivot-Tabellen anhand der Dropdown-Auswahl mithilfe von VBA
Ich hoffe, jemand kann helfen. Ich habe ein Dashboard erstellt, das von einer anderen Person erstellt wurde und in dem auf Blatt 1 zahlreiche Tabellen über mehrere Blätter verteilt sind. Ich wurde gebeten, dies hinzuzufügen, und habe Pivot-Tabellen erstellt, die am besten geeignet sind die Arbeit. Das Problem, das ich habe, ist, dass ich sie brauche, um basierend auf den Dropdown-Daten auf Blatt 1 zu filtern.
Ich hoffe, dass dies über VBA möglich ist.
Ich konnte meine Pivot-Berichte anhand einer anderen Dropdown-Liste filtern, die auf Text basiert. Es ist jedoch nicht möglich, denselben Code (bei gezielter Auswahl der Option "Monat" und der zugehörigen Dropdown-Zelle) für eine Datumsauswahl zu verwenden, und ich kann auch nicht herausfinden, wie Mehrfachauswahl zulässig ist, damit ich den Datumsbereich auswählen kann.
Der von mir verwendete Code lautet wie folgt:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim pt As PivotTable
Dim pi As PivotItem
Dim strField As String
strField = "Region"
On Error Resume Next
Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Address = Range("D2").Address Then
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
With pt.PageFields(strField)
For Each pi In .PivotItems
If pi.Value = Target.Value Then
.CurrentPage = Target.Value
Exit For
Else
.CurrentPage = "(All)"
End If
Next pi
End With
Next pt
Next ws
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Jede Hilfe, die jemand leisten kann, wäre sehr dankbar. Ich bin ziemlich neu in VBA und versuche mein Bestes, um den Code zu optimieren, den ich online finde, aber es tut mir leid.
Vielen Dan
Revised: Ich habe auch den folgenden Code ausprobiert, den ich an anderer Stelle gefunden habe und der zum Auswählen von Datumsbereichen verwendet wurde
Sub FilterPivotDates()
'
Dim dStart As Date
Dim dEnd As Date
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Application.ScreenUpdating = False
On Error Resume Next
dStart = Sheets("Pivots").Range("F2").Value
dEnd = Sheets("Pivots").Range("f3").Value
Set pt = ActiveSheet.PivotTable1
Set pf = pt.PivotFields("Month")
pt.ManualUpdate = True
pf.EnableMultiplePageItems = True
For Each pi In pf.PivotItems
pi.Visible = True
Next pi
For Each pi In pf.PivotItems
If pi.Value < dStart Or pi.Value > dEnd Then
pi.Visible = False
End If
Next pi
Application.ScreenUpdating = False
pt.ManualUpdate = False
Set pf = Nothing
Set pt = Nothing
End Sub
In dem Beispiel habe ich festgestellt, dass dies durch einen Knopf bedient wird, aber ich habe es gerade in der Tabelle versucht. Das funktioniert aber auch bei mir nicht.