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

Hur filtrerar man pivottabellen baserat på ett specifikt cellvärde i Excel?

Normalt filtrerar vi data i en pivottabell genom att välja objekt i rullgardinsmenyn som visas i skärmdumpen nedan. Egentligen kan du filtrera en pivottabell baserat på värdet i en specifik cell. VBA-metoden i den här artikeln hjälper dig att lösa problemet.

Filtrera pivottabellen baserat på ett specifikt cellvärde med VBA-kod


Filtrera pivottabellen baserat på ett specifikt cellvärde med VBA-kod

Följande VBA-kod kan hjälpa dig att filtrera en pivottabell baserat på ett specifikt cellvärde i Excel. Gör så här.

1. Ange ett värde som du kommer att filtrera pivottabellen baserat på i en cell i förväg (här väljer jag cell H6).

2. Öppna kalkylbladet innehåller pivottabellen som du filtrerar efter cellvärde. Högerklicka sedan på arkfliken och välj Visa kod från snabbmenyn. Se skärmdump:

3. I öppningen Microsoft Visual Basic för applikationer kopiera under VBA-koden till kodfönstret.

VBA-kod: Filter-pivottabell baserat på cellvärde

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

Anmärkningar: I koden,

1) "Sheet1Ӏr kalkylbladets namn.
2) "Pivottabell2”Är namnet på pivottabellen.
3) Filtreringsfältet i pivottabellen kallas "Kategori".
4) Värdet du vill filtrera pivottabellen placeras i cellen H6.
Du kan ändra ovanstående variabelvärden efter behov.

4. tryck på andra + Q för att stänga Microsoft Visual Basic för applikationer fönster.

Sedan filtrerar pivottabellen baserat på värdet i cell H6 enligt nedanstående skärmdump:

Du kan ändra cellvärdet till andra efter behov.

Anmärkningar: Värden som du skriver i cell H6 ska exakt matcha värdena i rullgardinsmenyn Kategori i pivottabellen.


Relaterade artiklar:


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (23)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Genom att använda den här koden (uppdaterad för mina variabler förstås), när man byter fält, ändras filtret tillfälligt till det korrekta, och rensar sig sedan nästan omedelbart. Försöker ta reda på varför det gör detta (undrar om det har något att göra med ClearAllFilters i slutet av suben?)
Denna kommentar minimerades av moderatoren på webbplatsen
Hur skulle du göra detta med ett rapportfilter som har en hierarki?
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå! Tack för ditt makro.

Jag försökte använda den för mer än en pivottabell på samma sida, men det fungerar inte. Jag skrev det så här:

Privata delarkivsförändring (ByVal-mål som område)
Dim xPTable1 Som pivottabell
Dim xPFile1 Som PivotField
Dim xStr1 Som sträng
On Error Resume Next
Om Intersect(Target, Range("D7")) är ingenting, avsluta Sub
Application.ScreenUpdating = False
Set xPTable1 = Worksheets("BUSCADOR").PivotTables("PV_ETAPA1")
Ställ in xPFile1 = xPTable1.PivotFields("ETAPA1")
xStr1 = Target.Text
xPFile1.ClearAllFilters
xPFile1.CurrentPage = xStr1
Application.ScreenUpdating = True

Dim xPTable2 Som pivottabell
Dim xPFile2 Som PivotField
Dim xStr2 Som sträng
On Error Resume Next
Om Intersect(Target, Range("G7")) är ingenting, avsluta Sub
Application.ScreenUpdating = False
Set xPTable2 = Worksheets("BUSCADOR").PivotTables("PV_ETAPA2")
Ställ in xPFile2 = xPTable2.PivotFields("ETAPA2")
xStr2 = Target.Text
xPFile2.ClearAllFilters
xPFile2.CurrentPage = xStr2
Application.ScreenUpdating = True

End Sub

Du kanske kan hjälpa mig!

Tack på förhand!
Denna kommentar minimerades av moderatoren på webbplatsen
Hi


tack för makrot


Jag försöker samma sak men kan inte få det att fungera på 2 bord. de tittar båda på samma cell bara två olika pivottabeller


tack
Denna kommentar minimerades av moderatoren på webbplatsen
Du måste ändra namnet på pivottabellen. Varje pivottabell har ett annat namn. för att få det, högerklicka på pivoten och välj pivottabellinställningar, namnet kommer att finnas överst
Denna kommentar minimerades av moderatoren på webbplatsen
Hej!

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

tack
Denna kommentar minimerades av moderatoren på webbplatsen
Hej av någon anledning, detta makro efter att ha gått in på Visual Basic-sidan, dyker inte upp alls. Jag kan inte aktivera/köra det här makrot, jag har kontrollerat alla inställningar för förtroendecenter, men ingenting händer, snälla hjälp mig
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag kan inte få det här att fungera. Cellen jag vill hänvisa till dras in från en formel - skulle det vara anledningen till att filtret inte kan hitta den eftersom det tittar på formeln snarare än värdet som formeln returnerar? Tack på förhandHeather McDonagh
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Heather, hittade du en lösning. Jag har precis samma problem.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag kunde modifiera/filtrera 3 olika pivoter som finns på samma flik. Jag la också till en rad i min datamängd "No Data Found", annars lämnade den filtret till "ALLA" vilket jag inte ville ha. Ovanstående var till stor hjälp för att ge mig beröm med ledningen så jag ville dela med mig av det. Observera att (Alla) är skiftlägeskänsligt tog mig lite tid att ta reda på det.
Privata delarkivsförändring (ByVal-mål som område)
'testa
Dim xPTable Som pivottabell
Dim xPFile som pivotfält
Dim xStr As String

Dim x2PTable Som pivottabell
Dim x2PFile Som PivotField
Dim x2Str As String

Dim x3PTable Som pivottabell
Dim x3PFile Som PivotField
Dim x3Str As String

On Error Resume Next
Om Intersect(Target, Range("a2:e2")) är ingenting, avsluta Sub

Application.ScreenUpdating = False

'tbl-1
Set xPTable = Worksheets("Graphical").PivotTables("PivotTable1")
Ställ in xPFile = xPTable.PivotFields("MR Department - Department")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Om xPFile.CurrentPage = "(Alla)" Då xPFile.CurrentPage = "Ingen data hittades"

'tbl-2
Set x2PTable = Worksheets("Graphical").PivotTables("PivotTable2")
Ställ in x2PFile = x2PTable.PivotFields("MR Department - Department")
x2Str = Target.Text
x2PFile.ClearAllFilters
x2PFile.CurrentPage = x2Str
Om x2PFile.CurrentPage = "(Alla)" Då x2PFile.CurrentPage = "Ingen data hittades"

'tbl-3
Set x3PTable = Worksheets("Graphical").PivotTables("PivotTable3")
Ställ in x3PFile = x3PTable.PivotFields("MR Department - Department")
x3Str = Target.Text
x3PFile.ClearAllFilters
x3PFile.CurrentPage = x3Str
Om x3PFile.CurrentPage = "(Alla)" Då x3PFile.CurrentPage = "Ingen data hittades"

Application.ScreenUpdating = True

End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Är detta möjligt med google sheets? Om så är fallet, hur?
Denna kommentar minimerades av moderatoren på webbplatsen
Google Kalkylark kräver ingen pivottabell. du kan utföra direkt via filterfunktionen
Denna kommentar minimerades av moderatoren på webbplatsen
Jag skulle vilja använda flera kalkylbladsändringskoder i samma kalkylblad. Hur gör man det? Min kod är enligt nedan:
Privata delarkivsförändring (ByVal-mål som område)
'Pivottabellfilter baserat på cellvärde
Dim xPTable Som pivottabell
Dim xPFile som pivotfält
Dim xStr As String
On Error Resume Next
Om Intersect(Target, Range("D20:D21")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
Ställ in xPFile = xPTable.PivotFields("Designation")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub

Private Sub Worksheet_Change2(ByVal Target As Range)
'Pivottabellfilter baserat på cellvärde 2
Dim xPTable Som pivottabell
Dim xPFile som pivotfält
Dim xStr As String
On Error Resume Next
Om Intersect(Target, Range("H20:H21")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
Ställ in xPFile = xPTable.PivotFields("Offering")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Olá, gostaria de sabre se quisesse filtrar mais de uma categoria como poderia ser?
Denna kommentar minimerades av moderatoren på webbplatsen
Vad händer om jag vill länka urvalscellen till en annan flik? Det här är min kod än så länge
Privata delarkivsförändring (ByVal-mål som område)
Dim xPTable1 Som pivottabell
Dim xPFile1 Som PivotField
Dim xStr1 Som sträng
On Error Resume Next
Om Intersect(Target, Range("B1")) är ingenting, avsluta Sub
Application.ScreenUpdating = False
Set xPTable1 = Worksheets("SM_SKU PIVOTS").PivotTables("PivotTable1")
Ställ in xPFile1 = xPTable1.PivotFields("Geografi")
xStr1 = Target.Text
xPFile1.ClearAllFilters
xPFile1.CurrentPage = xStr1
Application.ScreenUpdating = True

Dim xPTable2 Som pivottabell
Dim xPFile2 Som PivotField
Dim xStr2 Som sträng
On Error Resume Next
Om Intersect(Target, Range("B1")) är ingenting, avsluta Sub
Application.ScreenUpdating = False
Set xPTable2 = Worksheets("SM_SKU PIVOTS").PivotTables("PivotTable4")
Ställ in xPFile2 = xPTable2.PivotFields("Geografi")
xStr2 = Target.Text
xPFile2.ClearAllFilters
xPFile2.CurrentPage = xStr2
Application.ScreenUpdating = True

Dim xPTable3 Som pivottabell
Dim xPFile3 Som PivotField
Dim xStr3 Som sträng
On Error Resume Next
Om Intersect(Target, Range("B1")) är ingenting, avsluta Sub
Application.ScreenUpdating = False
Set xPTable3 = Worksheets("SM_SKU PIVOTS").PivotTables("PivotTable8")
Ställ in xPFile3 = xPTable3.PivotFields("Geografi")
xStr3 = Target.Text
xPFile3.ClearAllFilters
xPFile3.CurrentPage = xStr3
Application.ScreenUpdating = True

End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå!

Jag är ny med VBA och jag skulle vilja ha en kod för att välja ett pivotfilter baserat på ett cellområde.
Hur kan jag ändra "CurrentPage" till ett intervallvärde?
Tack!!
-------------------------------------------------- -----------------------------------------
Sub PrintTour()

ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Bereich 1].[Tour].[Tour ]"). _
ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Bereich 1].[Tour].[Tour]"). _
CurrentPage = "[Bereich 1].[Tour lt. Anlieferungstag].&[4001-01]"
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket för den här koden! Jag fick det att fungera efter att ha justerat för att möta mina fält, men efter att ha formaterat några ändringar på mitt ark nu fungerar det inte! Jag flyttade den från A1 till B1, ändrade lite cellformatering för att få den att sticka ut, etc. Inget för tokigt men nu uppdateras det inte när jag ändrar text i B1. Någon som har några idéer?

Privata delarkivsförändring (ByVal-mål som område)
'testa
Dim xPTable Som pivottabell
Dim xPFile som pivotfält
Dim xStr As String

Dim x2PTable Som pivottabell
Dim x2PFile Som PivotField
Dim x2Str As String

Dim x3PTable Som pivottabell
Dim x3PFile Som PivotField
Dim x3Str As String

On Error Resume Next
Om Intersect(Target, Range("b1")) är ingenting, avsluta Sub

Application.ScreenUpdating = False

'tbl-1
Set xPTable = Worksheets("Linjerapport").PivotTables("PivotTable7")
Ställ in xPFile = xPTable.PivotFields("Utopia Source")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr

'tbl-2
Set x2PTable = Worksheets("Linjerapport").PivotTables("PivotTable2")
Ställ in x2PFile = x2PTable.PivotFields("Utopia Source")
x2Str = Target.Text
x2PFile.ClearAllFilters
x2PFile.CurrentPage = x2Str

'tbl-3
Set x3PTable = Worksheets("Linjerapport").PivotTables("PivotTable3")
Ställ in x3PFile = x3PTable.PivotFields("Utopia Source")
x3Str = Target.Text
x3PFile.ClearAllFilters
x3PFile.CurrentPage = x3Str

Application.ScreenUpdating = True

End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Lance,
Jag testade din kod och den fungerar bra i mitt fall. Att ändra cellformatet påverkar inte kodens funktion.
Denna kommentar minimerades av moderatoren på webbplatsen
Hur fungerar det med Power Pivot när du använder flera tabeller? Jag spelade in makro som ändrade värdet i filter. Gjorde några ändringar för att få ovanstående kod att fungera. Men det ger ett fel på typfel. Spelar ingen roll vad jag gör.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej DK,
Metoden fungerar inte för Power Pivot. Beklagar olägenheten.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej!
Tack så mycket för dessa förklaringar.

J'aimerai utiliser un filtre (1 cellule) en F4 par exemple qui filterait deux TCD qui sont sur la même feuille.

Cela fonctionne très bien avec un TCD mais dès que j'essaye de combiner le second, ça ne marche pas.
Kan du hjälpa mig ?

Mercibeaucoup
Ambrose
Denna kommentar minimerades av moderatoren på webbplatsen
Hej!

Merci beaucoup pour cette explication qui marche parfaitement.
En revanche, j'aimerais pouvoir utiliser ce code pour pouvoir filtrera 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 källor. En revanche, le filtre sur lequel se base ces TDC est le même.

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

Voici le code utilisé quand il marche avec un TCD :

Privata delarkivsförändring (ByVal-mål som område)
'Uppdatera av Extendoffice 20180702
Dim xPTable Som pivottabell
Dim xPFile som pivotfält
Dim xStr As String
On Error Resume Next
Om Intersect(Target, Range("G4")) är ingenting, avsluta Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("Cadrage").PivotTables("Tableau croisé dynamique7")
Ställ in xPFile = xPTable.PivotFields("N°PROJET")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub

Mercibeaucoup
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Ambroise,

Tyvärr är det svårt att ändra den här koden för att möta dina behov. Om du vill filtrera flera pivottabeller med ett enda filter, kan metoderna i den här artikeln nedan göra dig en tjänst:
Hur ansluter man en enda slicer till flera pivottabeller i Excel?
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL