Note: The other languages of the website are Google-translated. Back to English

Wie verknüpfe ich den Pivot Table-Filter mit einer bestimmten Zelle in Excel?

Wenn Sie einen Pivot-Tabellenfilter mit einer bestimmten Zelle verknüpfen und die Pivot-Tabelle basierend auf dem Zellenwert filtern möchten, kann Ihnen die Methode in diesem Artikel helfen.

Verknüpfen Sie den Pivot-Tabellenfilter mit einer bestimmten Zelle mit VBA-Code


Verknüpfen Sie den Pivot-Tabellenfilter mit einer bestimmten Zelle mit VBA-Code

Die Pivot-Tabelle, mit der Sie ihre Filterfunktion mit einem Zellenwert verknüpfen, sollte ein Filterfeld enthalten (der Name des Filterfelds spielt im folgenden VBA-Code eine wichtige Rolle).

Nehmen Sie die folgende Pivot-Tabelle als Beispiel. Das Filterfeld in der Pivot-Tabelle wird aufgerufen Kategorienund es enthält zwei Werte “Kosten" und "Angebote”. Nach dem Verknüpfen des Pivot-Tabellenfilters mit einer Zelle sollten die Zellenwerte, die Sie zum Filtern der Pivot-Tabelle anwenden, "Ausgaben" und "Verkäufe" sein.

1. Bitte wählen Sie die Zelle aus (hier wähle ich Zelle H6 aus), die Sie mit der Filterfunktion von Pivot Table verknüpfen möchten, und geben Sie vorab einen der Filterwerte in die Zelle ein.

2. Öffnen Sie das Arbeitsblatt mit der Pivot-Tabelle, die Sie mit der Zelle verknüpfen. Klicken Sie mit der rechten Maustaste auf die Registerkarte Blatt und wählen Sie Code anzeigen aus dem Kontextmenü. Siehe Screenshot:

3. In dem Microsoft Visual Basic für Applikationen Fenster, kopieren Sie unter VBA-Code in das Code-Fenster.

VBA-Code: Pivot-Tabellenfilter mit einer bestimmten Zelle verknüpfen

Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xStr As String
    On Error Resume Next
    If Intersect(Target, Range("H6")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
    Set xPFile = xPTable.PivotFields("Category")
    xStr = Target.Text
    xPFile.ClearAllFilters
    xPFile.CurrentPage = xStr
    Application.ScreenUpdating = True
End Sub

Anmerkungen:

1) "Sheet1”Ist der Name des geöffneten Arbeitsblatts.
2) "PivotTable2”Ist der Name der Pivot-Tabelle, deren Filterfunktion Sie mit einer Zelle verknüpfen.
3) Das Filterfeld in der Pivot-Tabelle heißt "Kategorien".
4) Die referenzierte Zelle ist H6. Sie können diese Variablenwerte je nach Bedarf ändern.

4. Drücken Sie die Taste Andere + Q Tasten zum Schließen der Microsoft Visual Basic für Applikationen Fenster.

Jetzt ist die Filterfunktion der Pivot-Tabelle mit Zelle H6 verknüpft.

Aktualisieren Sie die Zelle H6, und die entsprechenden Daten in der Pivot-Tabelle werden basierend auf dem vorhandenen Wert herausgefiltert. Siehe Screenshot:

Beim Ändern des Zellenwerts werden die gefilterten Daten in der Pivot-Tabelle automatisch geändert. Siehe Screenshot:


Wählen Sie ganz einfach ganze Zeilen basierend auf dem Zellenwert in einer Certian-Spalte aus:

Das Wählen Sie Bestimmte Zellen aus Nutzen von Kutools for Excel kann Ihnen helfen, schnell ganze Zeilen basierend auf dem Zellenwert in einer Certian-Spalte in Excel auszuwählen (siehe Abbildung unten). Nachdem Sie alle Zeilen basierend auf dem Zellenwert ausgewählt haben, können Sie sie manuell verschieben oder an einen neuen Speicherort kopieren, wie Sie es in Excel benötigen.
Jetzt herunterladen und ausprobieren! (30-Tag kostenlose Loipe)


In Verbindung stehende Artikel:


Die besten Tools für die Office-Produktivität

Kutools for Excel löst die meisten Ihrer Probleme und erhöht Ihre Produktivität um 80%

  • Wiederverwendung: Schnell einfügen komplexe Formeln, Diagramme und alles, was du vorher benutzt hast; Zellen verschlüsseln mit Passwort; Mailingliste erstellen und E-Mails senden ...
  • Super Formelriegel (leicht mehrere Textzeilen und Formeln bearbeiten); Layout lesen (leichtes Lesen und Bearbeiten einer großen Anzahl von Zellen); In gefilterten Bereich einfügen...
  • Zellen / Zeilen / Spalten zusammenführen ohne Daten zu verlieren; Inhalt geteilter Zellen; Kombinieren Sie doppelte Zeilen / Spalten... doppelte Zellen verhindern; Bereiche vergleichen...
  • Wählen Sie Duplizieren oder Eindeutig Reihen; Wählen Sie Leere Zeilen (alle Zellen sind leer); Super Find und Fuzzy Find in vielen Arbeitsmappen; Zufällige Auswahl ...
  • Exakte Kopie Mehrere Zellen ohne Änderung der Formelreferenz; Referenzen automatisch erstellen zu mehreren Blättern; Aufzählungszeichen einfügen, Kontrollkästchen und mehr ...
  • Text extrahieren, Text hinzufügen, Nach Position entfernen, Leerzeichen entfernen;; Paging-Zwischensummen erstellen und drucken; Inhalt und Kommentare zwischen Zellen konvertieren...
  • Superfilter (Speichern und Anwenden von Filterschemata auf andere Blätter); Erweiterte Sortierung nach Monat / Woche / Tag, Häufigkeit und mehr; Spezialfilter fett, kursiv ...
  • Kombinieren Sie Arbeitsmappen und Arbeitsblätter;; Tabellen basierend auf Schlüsselspalten zusammenführen; Daten in mehrere Blätter aufteilen; Batch-Konvertierung von xls, xlsx und PDF...
  • Mehr als 300 leistungsstarke Funktionen. Unterstützt Office / Excel 2007-2021 und 365. Unterstützt alle Sprachen. Einfache Bereitstellung in Ihrem Unternehmen oder Ihrer Organisation. 30-tägige kostenlose Testversion mit allen Funktionen. 60 Tage Geld-zurück-Garantie.
kte tab 201905

Office Tab Bringt die Oberfläche mit Registerkarten in Office und erleichtert Ihnen die Arbeit erheblich

  • Aktivieren Sie das Bearbeiten und Lesen von Registerkarten in Word, Excel und PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
  • Steigert Ihre Produktivität um 50 % und reduziert jeden Tag Hunderte von Mausklicks für Sie!
officetab unten
Kommentare (36)
Noch keine Bewertungen. Bewerten Sie als Erster!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
wie man es auf mehreren Feldern macht, da es im Code nur ein Ziel gibt
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Frank
Sory kann dir da nicht helfen.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Was ist, wenn sich die Zelle, die mit der Pivot-Tabelle verknüpft ist, in diesem Fall H6, auf einem anderen Arbeitsblatt befindet? Wie ändert es den Code?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Was ist, wenn ich mehr als 1 Pivot-Tabelle habe und mit 1 Zelle verknüpfen möchte? Wie soll ich den Code ändern?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Jiri,
Sorry kann dir da nicht helfen. Willkommen, um Fragen in unserem Forum zu stellen: https://www.extendoffice.com/forum.html um mehr Excel-Unterstützung von unserem Excel-Profi oder anderen Excel-Fans zu erhalten.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
finden Sie diese und ändern Sie sie in Array(),Intersect(), Worksheets(), PivotFields()

PivotTable1
PivotTable2
PivotTable3
PivotTable4
H1
Blattname
Feldname




Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xPTabled As PivotTable
    Dim xPFiled As PivotField
    Dim xStr As String
    On Error Resume Next
    '리스트 만들기
    Dim listArray() As Variant
    listArray = Array("PivotTable1", "PivotTable2", "PivotTable3", "PivotTable4")
    If Intersect(Target, Range("H1")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    For i = 0 To UBound(listArray)
        Set xPTable = Worksheets("SheetName").PivotTables(listArray(i))
        Set xPFile = xPTable.PivotFields("FieldName")
        'MsgBox (listArray(i))
        xStr = Target.Text
        xPFile.ClearAllFilters
        xPFile.CurrentPage = xStr
    Next
        Application.ScreenUpdating = True
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Boa tarde...! Ótima publicação, como faço para utilizar o filtro em duas ou mais tabelas dinâmicas...? Agradeço desde já.

Guten Tag...! Tolle Veröffentlichung, wie verwende ich den Filter in zwei oder mehr PivotTables ...? Danke im Voraus.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo GilmarAlves,
Sorry kann dir da nicht helfen. Willkommen, um Fragen in unserem Forum zu stellen: https://www.extendoffice.com/forum.html um mehr Excel-Unterstützung von unserem Excel-Profi oder anderen Excel-Fans zu erhalten.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hat jemand die Frage zur Verknüpfung mehrerer Pivot-Tabellen herausgefunden?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Werte in Array(), Worksheets() und Intersect() ändern



**Finde diese und ändere sie**
Blattname
E1
PivotTable1
PivotTable2
PivotTable3




Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
'Aktualisieren durch Extendoffice 20180702
Dim xPTable als PivotTable
Dim xPFile als PivotField

Dim xPTabled als PivotTable
Dim xPFiled As PivotField

Dim xStr als Zeichenfolge



On Error Resume Next

'리스트 만들기
Dim listArray() als Variante
listArray = Array("PivotTable1", "PivotTable2", "PivotTable3")



Wenn Intersect(Target, Range("E1")) nichts ist, dann Sub verlassen
Application.ScreenUpdating = False

Für i = 0 zu UBound(listArray)

Setzen Sie xPTable = Worksheets("SheetName").PivotTables(listArray(i))
Setzen Sie xPFile = xPTable.PivotFields("Company_ID")

xStr = Ziel.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr



Weiter

Application.ScreenUpdating = True



End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ciao, sto provando a fare lo stesso esempio per far in modo che il filtro della pivot si setti sul valore della cella,
nicht riesco a farla funzionare.

Quale passaggio manca nella descrizione sopra?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,
Haben Sie eine Fehlermeldung erhalten? Ich muss mehr über Ihr Problem wissen, z. B. Ihre Excel-Version. Und wenn es Ihnen nichts ausmacht, versuchen Sie, Ihre Daten in einer neuen Arbeitsmappe zu erstellen, und versuchen Sie es erneut, oder machen Sie einen Screenshot Ihrer Daten und laden Sie ihn hier hoch.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,

Ich habe versucht, dies für den Spaltenfilter zum Laufen zu bringen, scheint aber nicht zu funktionieren. Brauche ich dafür einen anderen Code?

Vielen Dank
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Justin,
Haben Sie eine Fehlermeldung erhalten? Ich muss genaueres zu deinem Problem wissen.
Bevor Sie den Code anwenden, vergessen Sie nicht, das "Name des Blattes""Name der Pivot-Tabelle""Name des Filters der Pivot-Tabelle" und der Zelle nach denen Sie die Pivot-Tabelle filtern möchten (siehe Screenshot).
https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/4.png
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Kristall,

Danke für Ihre Hilfe. Das Problem ist, dass die Funktion aus irgendeinem Grund nichts tut. Etwas Klarstellung:

Pivot-Name: Order_Comp_B2C
Blattname: Berechnungsblatt
Filtername: Wochennummer (ich habe diesen Namen von „Dispatch Week No“ in der Datendatei geändert)
Zu ändernde Zelle: O26 und O27 (dies sollte in Reichweite gehen)

In diesem Pivot versuche ich, den Filter für die Spalten zu ändern, ich habe nichts im Filterbereich im PivotTable-Feldermenü.

mein Code ist:

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
'Aktualisieren durch Extendoffice 20180702
Dim xPTable als PivotTable
Dim xPFile als PivotField
Dim xStr als Zeichenfolge
On Error Resume Next
Wenn Intersect(Target, Range("O26")) nichts ist, dann Exit Sub
Application.ScreenUpdating = False
Setzen Sie xPTable = Worksheets("Berechnungsblatt").PivotTables("Order_Comp_B2C")
Setze xPFile = xPTable.PivotFields("Wochennummer")
xStr = Ziel.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub

Vielen Dank,

Justin
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Justin Teeuw,
Ich habe das geändert Pivot-Name, Blattname, Filtername und Zelle zu ändern den oben genannten Bedingungen entsprechen und den von Ihnen bereitgestellten VBA-Code ausprobiert haben, funktioniert es in meinem Fall gut. Siehe das folgende GIF oder die beigefügte Arbeitsmappe.
Haben Sie etwas dagegen, eine neue Arbeitsmappe zu erstellen und den Code erneut zu versuchen?
https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/6.gif
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Kristall,

Anbei ein Screenshot des Pivots, das rote Kästchen ist der Filter, den ich basierend auf dem Zellenwert ändern möchte.

Vorzugsweise möchte ich eine Reihe von Zellen verwenden, die mehrere Wochennummern angeben.

Vielen Dank,

Justin
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Justin,
Entschuldigung, ich habe den Screenshot, den Sie auf der Seite angehängt haben, nicht gesehen. Vielleicht ist ein Fehler auf der Seite.
Wenn Sie das Problem noch lösen müssen, senden Sie mir eine E-Mail an zxm@addin99.com. Entschuldigung für die Unannehmlichkeiten.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Justin Teeuw,
Bitte versuchen Sie den folgenden VBA-Code. Hoffe, ich kann helfen.

Private Sub Worksheet_Change(ByVal Target As Range)
    'Update by Extendoffice 20220706
    Dim I As Integer
    Dim xFilterStr1, xFilterStr2 As String
    On Error Resume Next
    If Intersect(Target, Range("O26:O27")) Is Nothing Then Exit Sub
    'Application.ScreenUpdating = False
    
    xFilterStr1 = Range("O26").Value
    xFilterStr2 = Range("O27").Value
    ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number"). _
        ClearAllFilters
    If xFilterStr1 = "" And xFilterStr2 = "" Then Exit Sub
    ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number"). _
        EnableMultiplePageItems = True
    xCount = ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number").PivotItems.Count

    For I = 1 To xCount
        If I <> xFilterStr1 And I <> xFilterStr2 Then
            ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number").PivotItems(I).Visible = False
        Else
            ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number").PivotItems(I).Visible = True
        End If
    Next

    'Application.ScreenUpdating = True
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe es für ein normales Excel verwendet und es hat funktioniert. Aber ich konnte es nicht für Olap-Arbeitsblätter verwenden. vielleicht muss ich es ein wenig ändern?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo maziaritib4 TIB,
Die Methode ist nur für Microsoft Excel verfügbar. Entschuldigung für die Unannehmlichkeiten.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Justin,

Das hat perfekt funktioniert, aber ich frage mich, ob diese Regel auf mehrere PivotTables innerhalb desselben Blattes angewendet werden kann.

Vielen Dank,
James
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo James,

Ja, das ist möglich, Code, den ich dafür verwendet habe, ist (4 Pivots und 2 Zellreferenzen):

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Dim I als ganze Zahl
Dim xFilterStr1, xFilterStr2, yFilterstr1, yfilterstr2 als String
On Error Resume Next
Wenn Intersect(Target, Range("O26:P27")) nichts ist, dann Beende Sub

xFilterStr1 = Range("O26").Wert
xFilterStr2 = Range("O27").Wert
yFilterstr1 = Range("p26").Wert
yfilterstr2 = Range("p27").Wert
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Wochennummer"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Wochennummer"). _
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Wochennummer"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Wochennummer"). _
Alle Filter löschen

If xFilterStr1 = "" And xFilterStr2 = "" And yFilterstr1 = "" And yfilterstr2 = "" Then Exit Sub
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Wochennummer"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Wochennummer"). _
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Wochennummer"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Wochennummer"). _
EnableMultiplePageItems = True

xCount = ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Wochennummer").PivotItems.Count
xCount = ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Wochennummer").PivotItems.Count
yCount = ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Wochennummer").PivotItems.Count
yCount = ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Wochennummer").PivotItems.Count

Für I = 1 bis xCount
Wenn ich <> xFilterStr1 und ich <> xFilterStr2 dann
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Wochennummer").PivotItems(I).Visible = False
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Wochennummer").PivotItems(I).Visible = False
sonst
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Wochennummer").PivotItems(I).Visible = True
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Wochennummer").PivotItems(I).Visible = True
End If
Weiter

Für I = 1 bis yCount
Wenn ich <> yfilterstr1 und ich <> yfilterstr2 dann
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Wochennummer").PivotItems(I).Visible = False
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Wochennummer").PivotItems(I).Visible = False
sonst
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Wochennummer").PivotItems(I).Visible = True
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Wochennummer").PivotItems(I).Visible = True
End If
Weiter

End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Werte in Array(), Worksheets() und Intersect() ändern



**Finde diese und ändere sie**
Blattname
E1
PivotTable1
PivotTable2
PivotTable3




Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
'Aktualisieren durch Extendoffice 20180702
Dim xPTable als PivotTable
Dim xPFile als PivotField

Dim xPTabled als PivotTable
Dim xPFiled As PivotField

Dim xStr als Zeichenfolge



On Error Resume Next

'리스트 만들기
Dim listArray() als Variante
listArray = Array("PivotTable1", "PivotTable2", "PivotTable3")



Wenn Intersect(Target, Range("E1")) nichts ist, dann Sub verlassen
Application.ScreenUpdating = False

Für i = 0 zu UBound(listArray)

Setzen Sie xPTable = Worksheets("SheetName").PivotTables(listArray(i))
Setzen Sie xPFile = xPTable.PivotFields("Company_ID")

xStr = Ziel.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr



Weiter

Application.ScreenUpdating = True



End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,

Der Code funktioniert bei mir einwandfrei. Ich kann jedoch die Pivot-Tabelle nicht dazu bringen, das Filterziel automatisch zu aktualisieren. Das Ziel ist in meinem Fall eine Formel [DATE(D18,S14,C18)]. Der Code funktioniert nur, wenn ich auf die Zielzelle doppelklicke und die Eingabetaste drücke.

Vielen Dank.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,

Dieser Code funktioniert einwandfrei. Ich bin jedoch nicht in der Lage, den Code zum automatischen Aktualisieren der Pivot-Tabelle zu erhalten. Der Zielwert ist für mich eine Formel (= DATUM (D18,..,..)), die sich ändert, je nachdem, was an D18 ausgewählt wird. Damit die Pivot-Tabelle aktualisiert wird, muss ich auf die Zielzelle doppelklicken und die Eingabetaste drücken. Gibt es einen Ausweg?

Vielen Dank.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo ST,
Angenommen, Ihr Zielwert befindet sich in H6 und ändert sich abhängig vom Wert in D18. Um eine Pivot-Tabelle basierend auf diesem Zielwert zu filtern. Der folgende VBA-Code kann helfen. Bitte versuchen Sie es.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2022/07/22
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next

xBoolean = False
Set xRg = Range("h6")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
    xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
    xBoolean = True
ElseIf Not (xDs Is Nothing) Then
    xBoolean = True
End If


If Not xBoolean Then Exit Sub

Application.ScreenUpdating = False
Set xPTable = Worksheets("Sheet1").PivotTables("Pivot Table 1")
Set xPFile = xPTable.PivotFields("Category")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True

End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Kristall,

Ich habe dem Code eine Zeile hinzugefügt: Dim xRg As Range

Der Code setzt die Daten nicht automatisch zurück, wenn das Ziel geändert wird. Ich habe eine Excel-Datei, die das repliziert, was ich versuche, ich kann jedoch keine Anhänge auf dieser Website hinzufügen. D3 (Ziel = DATE(A15,B15,C15)) hat eine Gleichung, die mit A15, B15 und C15 verknüpft ist. Wenn irgendein Wert auf A15, B15 und C15 geändert wird, wird die Pivot-Tabelle auf „Kein Filter“ zurückgesetzt. Könnt ihr mir da weiterhelfen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo ST,
Ich verstehe nicht ganz was du meinst. In Ihrem Fall wird der Wert der Zielzelle D3 zum Filtern der Pivot-Tabelle verwendet. Die Formel in der Zielzelle D3 verweist auf die Werte der Zellen A15, B15 und C15, die sich entsprechend den Werten in den Referenzzellen ändern. Wenn ein Wert auf A15, B15 und C15 geändert wird, wird die Pivot-Tabelle automatisch gefiltert, wenn der Wert in der Zielzelle die Filterbedingungen der Pivot-Tabelle erfüllt. Wenn der Wert in der Zielzelle die Filterkriterien der Pivot-Tabelle nicht erfüllt, wird die Pivot-Tabelle automatisch auf „keine Filterung“ zurückgesetzt.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, eine Excel-Datei mit Ihnen zu teilen. Wenn sich mein Zielwert, der ein Datum ist, entsprechend den Änderungen in anderen Zellen ändert. Ich muss auf die Zielzelle doppelklicken und die Eingabetaste drücken (wie Sie es nach der Eingabe einer Formel in eine Zelle tun würden), um die Pivot-Tabelle zu aktualisieren
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo SagarT,
Der Code wurde aktualisiert. Bitte versuchen Sie es. Vielen Dank für Ihr Feedback.
Vergessen Sie nicht, die Namen des Arbeitsblatts, der Pivot-Tabelle und des Filters im Code zu ändern. Oder Sie können die folgende hochgeladene Arbeitsmappe zum Testen herunterladen.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220805
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next

xBoolean = False
Set xRg = Range("D3")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
    xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
    xBoolean = True
ElseIf Not (xDs Is Nothing) Then
    xBoolean = True
End If


If Not xBoolean Then Exit Sub
xStr = Format(xRg.Text, "m/d/yyyy")
Application.ScreenUpdating = False
Set xPTable = Worksheets("Sheet2").PivotTables("PivotTable1")
Set xPFile = xPTable.PivotFields("Date")
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True

End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
finden Sie diese und ändern Sie sie in Array(),Intersect(), Worksheets(), PivotFields()

PivotTable1
PivotTable2
PivotTable3
PivotTable4
H1
Blattname
Feldname




Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xPTabled As PivotTable
    Dim xPFiled As PivotField
    Dim xStr As String
    On Error Resume Next
    '리스트 만들기
    Dim listArray() As Variant
    listArray = Array("PivotTable1", "PivotTable2", "PivotTable3", "PivotTable4")
    If Intersect(Target, Range("H1")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    For i = 0 To UBound(listArray)
        Set xPTable = Worksheets("SheetName").PivotTables(listArray(i))
        Set xPFile = xPTable.PivotFields("FieldName")
        'MsgBox (listArray(i))
        xStr = Target.Text
        xPFile.ClearAllFilters
        xPFile.CurrentPage = xStr
    Next
        Application.ScreenUpdating = True
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Как сделать чтобы сводная таблица применяла сразу 2 фильтра из 2хразных ячеек? а не 1 как в примере?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Алексей,

Bitte überprüfen Sie, ob der VBA-Code in diesem Kommentar ist #38754 kann helfen.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Можно ли сослаться вместо ячейки H6 на ячейку на другом листе? как это сделать? подскажите пожалуйста.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Алексей,

Sie müssen den Code nicht ändern, fügen Sie einfach den VBA-Code zum Arbeitsblatt der Zelle hinzu, auf die Sie verweisen möchten.
Wenn Sie beispielsweise eine Pivot-Tabelle mit dem Namen "PivotTable1"Im Sheet2 basierend auf dem Wert der Zelle H6 in Sheet3, klicken Sie bitte mit der rechten Maustaste auf die Sheet3 Arbeitsblatt, klicken Sie auf Code anzeigen aus dem Rechtsklickmenü und fügen Sie dann den Code zu der hinzu Blatt3 (Code) Fenster.
Es sind noch keine Kommentare vorhanden
Hinterlassen Sie Ihre Kommentare
Als Gast posten
×
Bewerte diese Nachricht:
0   Figuren
Vorgeschlagene Standorte

Folgen Sie uns

Copyright © 2009 - www.extendoffice.com. | Alle Rechte vorbehalten. Unterstützt von ExtendOffice. | Sitemap
Microsoft und das Office-Logo sind Marken oder eingetragene Marken der Microsoft Corporation in den USA und / oder anderen Ländern.
Geschützt durch Sectigo SSL