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

Wie filtere ich die Pivot-Tabelle basierend auf einem bestimmten Zellenwert in Excel?

Normalerweise filtern wir Daten in einer Pivot-Tabelle, indem wir Elemente in der Dropdown-Liste auswählen, wie im folgenden Screenshot gezeigt. Tatsächlich können Sie eine Pivot-Tabelle basierend auf dem Wert in einer bestimmten Zelle filtern. Die VBA-Methode in diesem Artikel hilft Ihnen bei der Lösung des Problems.

Filtern Sie die Pivot-Tabelle basierend auf einem bestimmten Zellenwert mit VBA-Code


Filtern Sie die Pivot-Tabelle basierend auf einem bestimmten Zellenwert mit VBA-Code

Der folgende VBA-Code kann Ihnen beim Filtern einer Pivot-Tabelle basierend auf einem bestimmten Zellenwert in Excel helfen. Bitte gehen Sie wie folgt vor.

1. Bitte geben Sie einen Wert, nach dem Sie die Pivot-Tabelle filtern möchten, im Voraus in eine Zelle ein (hier wähle ich Zelle H6 aus).

2. Öffnen Sie das Arbeitsblatt mit der Pivot-Tabelle, die Sie nach Zellenwert filtern möchten. Klicken Sie dann mit der rechten Maustaste auf die Registerkarte Blatt und wählen Sie im Kontextmenü die Option Code anzeigen. Siehe Screenshot:

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

VBA-Code: Filter-Pivot-Tabelle basierend auf dem Zellenwert

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:H7")) 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: Im Code,

1) "Sheet1”Ist der Name des Arbeitsblatts.
2) "PivotTable2”Ist der Name der Pivot-Tabelle.
3) Das Filterfeld in der Pivot-Tabelle heißt "Kategorien".
4) Der Wert, den Sie für die Pivot-Tabelle filtern möchten, wird in die Zelle eingefügt H6.
Sie können die obigen Variablenwerte nach Bedarf ändern.

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

Anschließend filtert die Pivot-Tabelle basierend auf dem Wert in Zelle H6 (siehe Abbildung unten):

Sie können den Zellenwert nach Bedarf in andere ändern.

Hinweis: Die Werte, die Sie in Zelle H6 eingeben, sollten genau mit den Werten in der Dropdown-Liste Kategorie der Pivot-Tabelle übereinstimmen.


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 (23)
Noch keine Bewertungen. Bewerten Sie als Erster!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wenn Sie diesen Code verwenden (natürlich für meine Variablen aktualisiert), wechselt der Filter beim Ändern des Felds vorübergehend zum richtigen und löscht sich dann fast sofort. Versuchen Sie herauszufinden, warum es dies tut (fragen Sie sich, ob es etwas mit den ClearAllFilters am Ende des Subs zu tun hat?)
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie würden Sie das mit einem Berichtsfilter machen, der eine Hierarchie hat?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hey! Danke für dein Makro.

Ich habe versucht, es für mehr als eine Pivot-Tabelle auf derselben Seite zu verwenden, aber es funktioniert nicht. Ich habe es so geschrieben:

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Dim xPTable1 als PivotTable
Dim xPFile1 als PivotField
Dim xStr1 als Zeichenfolge
On Error Resume Next
Wenn Intersect(Target, Range("D7")) nichts ist, dann Exit Sub
Application.ScreenUpdating = False
Setze xPTable1 = Worksheets("BUSCADOR").PivotTables("PV_ETAPA1")
Setze xPFile1 = xPTable1.PivotFields("ETAPA1")
xStr1 = Ziel.Text
xPFile1.ClearAllFilters
xPFile1.CurrentPage = xStr1
Application.ScreenUpdating = True

Dim xPTable2 als PivotTable
Dim xPFile2 als PivotField
Dim xStr2 als Zeichenfolge
On Error Resume Next
Wenn Intersect(Target, Range("G7")) nichts ist, dann Sub verlassen
Application.ScreenUpdating = False
Setze xPTable2 = Worksheets("BUSCADOR").PivotTables("PV_ETAPA2")
Setze xPFile2 = xPTable2.PivotFields("ETAPA2")
xStr2 = Ziel.Text
xPFile2.ClearAllFilters
xPFile2.CurrentPage = xStr2
Application.ScreenUpdating = True

End Sub

Vielleicht könnt ihr mir weiterhelfen!

Vielen Dank im Voraus!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hi


danke für das Makro


Ich versuche das gleiche, kann es aber nicht an 2 Tischen zum Laufen bringen. Sie betrachten beide dieselbe Zelle, nur 2 verschiedene Pivot-Tabellen


dank
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Sie müssen den Namen der Pivot-Tabelle ändern. Jede Pivot-Tabelle hat einen anderen Namen. Klicken Sie dazu mit der rechten Maustaste auf den Pivot und wählen Sie Pivot-Tabelleneinstellungen aus, der Name steht oben
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,

Je ne comprends pas comment ajouter le nom du second TCD dans la macro pour que cela fonctionne sur les deux.
Pourriez-vous m'aider?

Danke
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, aus irgendeinem Grund wird dieses Makro nach dem Aufrufen der Visual Basic-Seite überhaupt nicht angezeigt. Ich kann dieses Makro nicht aktivieren/ausführen, ich habe alle Trustcenter-Einstellungen überprüft, aber es passiert nichts, bitte helfen Sie mir
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, ich bekomme das irgendwie nicht zum Laufen. Die Zelle, auf die ich verweisen möchte, wird von einer Formel durchgezogen. Kann der Filter sie deshalb nicht finden, da er die Formel betrachtet und nicht den Wert, den die Formel zurückgibt? Vielen Dank im Voraus, Heather McDonagh
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Heather, hast du eine Lösung gefunden. Ich habe genau das gleiche Problem.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich konnte 3 verschiedene Pivots ändern/filtern, die sich auf derselben Registerkarte befinden. Ich habe auch eine Zeile in meinem Datensatz "No Data Found" hinzugefügt, sonst hat es den Filter auf "ALL" gelassen, was ich nicht wollte. Das Obige war eine große Hilfe, um mir beim Management Kudos zu verdienen, also wollte ich es teilen. Beachten Sie, dass bei (All) die Groß- und Kleinschreibung beachtet wird. Ich habe ein bisschen gebraucht, um das herauszufinden.
Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
'Prüfung
Dim xPTable als PivotTable
Dim xPFile als PivotField
Dim xStr als Zeichenfolge

Dim x2PTable als PivotTable
Dim x2PFile als PivotField
Dim x2Str als String

Dim x3PTable als PivotTable
Dim x3PFile als PivotField
Dim x3Str als String

On Error Resume Next
Wenn Intersect(Target, Range("a2:e2")) nichts ist, dann Beende Sub

Application.ScreenUpdating = False

'tbl-1
Setzen Sie xPTable = Worksheets("Graphical").PivotTables("PivotTable1")
Setzen Sie xPFile = xPTable.PivotFields("MR-Abteilung - Abteilung")
xStr = Ziel.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Wenn xPFile.CurrentPage = „(Alle)“ Then xPFile.CurrentPage = „Keine Daten gefunden“

'tbl-2
Setzen Sie x2PTable = Worksheets("Graphical").PivotTables("PivotTable2")
Setzen Sie x2PFile = x2PTable.PivotFields("MR-Abteilung - Abteilung")
x2Str = Ziel.Text
x2PFile.ClearAllFilters
x2PFile.CurrentPage = x2Str
Wenn x2PFile.CurrentPage = "(Alle)" Then x2PFile.CurrentPage = "Keine Daten gefunden"

'tbl-3
Setzen Sie x3PTable = Worksheets("Graphical").PivotTables("PivotTable3")
Setzen Sie x3PFile = x3PTable.PivotFields("MR-Abteilung - Abteilung")
x3Str = Ziel.Text
x3PFile.ClearAllFilters
x3PFile.CurrentPage = x3Str
Wenn x3PFile.CurrentPage = "(Alle)" Then x3PFile.CurrentPage = "Keine Daten gefunden"

Application.ScreenUpdating = True

End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Geht das mit Google Sheets? Wenn das so ist, wie?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Für Google Sheets ist keine Pivot-Tabelle erforderlich. Sie können direkt über die Filterfunktion ausführen
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich möchte mehrere Arbeitsblatt-Änderungscodes in demselben Arbeitsblatt verwenden. Wie geht das? Mein Code ist wie folgt:
Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
'Pivot-Tabellenfilter basierend auf Zellenwert
Dim xPTable als PivotTable
Dim xPFile als PivotField
Dim xStr als Zeichenfolge
On Error Resume Next
Wenn Intersect(Target, Range("D20:D21")) nichts ist, dann beenden Sie Sub
Application.ScreenUpdating = False
Setzen Sie xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
Setze xPFile = xPTable.PivotFields("Bezeichnung")
xStr = Ziel.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub

Private Sub Worksheet_Change2 (ByVal Ziel als Bereich)
'Pivot-Tabellenfilter basierend auf Zellenwert 2
Dim xPTable als PivotTable
Dim xPFile als PivotField
Dim xStr als Zeichenfolge
On Error Resume Next
Wenn Intersect(Target, Range("H20:H21")) nichts ist, dann Beende Sub
Application.ScreenUpdating = False
Setzen Sie xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
Setze xPFile = xPTable.PivotFields("Angebot")
xStr = Ziel.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Olá, gostaria de saber se quisesse filtrar mais de uma category como poderia ser?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Was ist, wenn ich die Auswahlzelle mit einer anderen Registerkarte verknüpfen möchte? Das ist bisher mein Code
Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Dim xPTable1 als PivotTable
Dim xPFile1 als PivotField
Dim xStr1 als Zeichenfolge
On Error Resume Next
Wenn Intersect(Target, Range("B1")) nichts ist, dann Exit Sub
Application.ScreenUpdating = False
Setzen Sie xPTable1 = Worksheets("SM_SKU PIVOTS").PivotTables("PivotTable1")
Setze xPFile1 = xPTable1.PivotFields("Geographie")
xStr1 = Ziel.Text
xPFile1.ClearAllFilters
xPFile1.CurrentPage = xStr1
Application.ScreenUpdating = True

Dim xPTable2 als PivotTable
Dim xPFile2 als PivotField
Dim xStr2 als Zeichenfolge
On Error Resume Next
Wenn Intersect(Target, Range("B1")) nichts ist, dann Exit Sub
Application.ScreenUpdating = False
Setzen Sie xPTable2 = Worksheets("SM_SKU PIVOTS").PivotTables("PivotTable4")
Setze xPFile2 = xPTable2.PivotFields("Geographie")
xStr2 = Ziel.Text
xPFile2.ClearAllFilters
xPFile2.CurrentPage = xStr2
Application.ScreenUpdating = True

Dim xPTable3 als PivotTable
Dim xPFile3 als PivotField
Dim xStr3 als Zeichenfolge
On Error Resume Next
Wenn Intersect(Target, Range("B1")) nichts ist, dann Exit Sub
Application.ScreenUpdating = False
Setzen Sie xPTable3 = Worksheets("SM_SKU PIVOTS").PivotTables("PivotTable8")
Setze xPFile3 = xPTable3.PivotFields("Geographie")
xStr3 = Ziel.Text
xPFile3.ClearAllFilters
xPFile3.CurrentPage = xStr3
Application.ScreenUpdating = True

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

Ich bin neu in VBA und hätte gerne einen Code, um einen Pivot-Filter basierend auf einem Zellbereich auszuwählen.
Wie kann ich "CurrentPage" in einen Bereichswert ändern?
Vielen Dank!!
-------------------------------------------------- -----------------------------------------
Sub PrintTour()

ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Bereich 1].[Tour].[Tour ]"). _
Alle Filter löschen
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Bereich 1].[Tour].[Tour]"). _
CurrentPage = "[Bereich 1].[Tour lt. Anlieferungstag].&[4001-01]"
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Vielen Dank für diesen Code! Ich habe es nach der Anpassung an meine Felder zum Laufen gebracht, aber nachdem ich einige Änderungen an meinem Blatt formatiert habe, funktioniert es jetzt nicht! Ich habe es von A1 nach B1 verschoben, einige Zellenformatierungen geändert, um es hervorzuheben usw. Nichts zu Verrücktes, aber jetzt wird es nicht aktualisiert, wenn ich Text in B1 ändere. Hat jemand Ideen?

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
'Prüfung
Dim xPTable als PivotTable
Dim xPFile als PivotField
Dim xStr als Zeichenfolge

Dim x2PTable als PivotTable
Dim x2PFile als PivotField
Dim x2Str als String

Dim x3PTable als PivotTable
Dim x3PFile als PivotField
Dim x3Str als String

On Error Resume Next
Wenn Intersect(Target, Range("b1")) nichts ist, dann beenden Sie Sub

Application.ScreenUpdating = False

'tbl-1
Setzen Sie xPTable = Worksheets("Line Report").PivotTables("PivotTable7")
Setze xPFile = xPTable.PivotFields("Utopia Source")
xStr = Ziel.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr

'tbl-2
Setzen Sie x2PTable = Worksheets("Line Report").PivotTables("PivotTable2")
Setze x2PFile = x2PTable.PivotFields("Utopia Source")
x2Str = Ziel.Text
x2PFile.ClearAllFilters
x2PFile.CurrentPage = x2Str

'tbl-3
Setzen Sie x3PTable = Worksheets("Line Report").PivotTables("PivotTable3")
Setze x3PFile = x3PTable.PivotFields("Utopia Source")
x3Str = Ziel.Text
x3PFile.ClearAllFilters
x3PFile.CurrentPage = x3Str

Application.ScreenUpdating = True

End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Lanze,
Ich habe deinen Code getestet und er funktioniert in meinem Fall einwandfrei. Das Ändern des Zellenformats wirkt sich nicht auf die Funktionsweise des Codes aus.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie funktioniert es mit Power Pivot, wenn mehrere Tabellen verwendet werden? Ich habe ein Makro aufgezeichnet, das den Wert im Filter ändert. Einige Änderungen vorgenommen, damit der obige Code funktioniert. Aber es wirft einen Type-Mismatch-Fehler. Egal, was ich tue.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo DK,
Die Methode funktioniert nicht für Power Pivot. Entschuldigung für die Unannehmlichkeiten.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,
Vielen Dank für diese Erklärungen.

J'aimerai utiliser un filtre (1 cellule) en F4 par example qui filtrerait deux TCD qui sont sur la meme feuille.

Cela fonctionne très bien avec un TCD mais dès que j'essaye de Combiner le second, ça ne marche pas.
Könntest du mir helfen?

Vielen Dank
Ambrose
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,

Merci beaucoup pour cette explication qui marche parfaitement.
En revanche, j'aimerais pouvoir utiliser ce code pour pouvoir filtrer deux tableaux croisés dynamiques en même temps qui sont sur la même feuille. La seule petite différence entre les deux, c'est qu'ils n'utilisent pas les mêmes sources. En revanche, le filtre sur lequel se base ces TDC est le meme.

Pourriez-vous m'aider à faire évoluer ce code afin que cela fonctionne ?

Dieser Code wird verwendet, um den Markennamen mit einem TCD zu erhalten:

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("G4")) nichts ist, dann Sub verlassen
Application.ScreenUpdating = False
Set xPTable = Worksheets("Cadrage").PivotTables("Tableau croisé dynamique7")
Setze xPFile = xPTable.PivotFields("N°PROJET")
xStr = Ziel.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub

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

Es tut uns leid, dass es schwierig ist, diesen Code an Ihre Bedürfnisse anzupassen. Wenn Sie mehrere Pivot-Tabellen mit einem einzigen Filter filtern möchten, können Ihnen die Methoden in diesem Artikel unten einen Gefallen tun:
Wie verbinde ich einen einzelnen Slicer mit mehreren Pivot-Tabellen in Excel?
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