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

Hur använder jag automatiskt automatiskt filter när data ändras i Excel?

I Excel, när du använder Filter funktion för att filtrera data, ändras inte filterresultatet automatiskt med dataändringarna i dina filtrerade data. När jag till exempel filtrerar alla äpplen från data ändrar jag nu en av de filtrerade uppgifterna till BBBBBB, men resultatet kommer inte att ändras såväl som följande skärmdump visas. Den här artikeln kommer jag att prata om hur man återanvänder automatiskt filtrering när data ändras i Excel.

doc auot uppdateringsfilter 1

Använd automatiskt automatiskt filter igen när data ändras med VBA-kod


pil blå höger bubbla Använd automatiskt automatiskt filter igen när data ändras med VBA-kod

Normalt kan du uppdatera filterdata genom att klicka på funktionen Ansök igen manuellt, men här introducerar jag en VBA-kod för att du ska uppdatera filterdata automatiskt när data ändras, gör så här:

1. Gå till kalkylbladet som du vill uppdatera filtret automatiskt när data ändras.

2. Högerklicka på arkfliken och välj Visa kod från snabbmenyn, i poppade ut Microsoft Visual Basic för applikationer fönster, kopiera och klistra in följande kod i det tomma modulfönstret, se skärmdump:

VBA-kod: Automatiskt återanvända filter när data ändras:

Private Sub Worksheet_Change(ByVal Target As Range)
   Sheets("Sheet3").AutoFilter.ApplyFilter
End Sub

doc auot uppdateringsfilter 2

Anmärkningar: I ovanstående kod, Blad 3 är namnet på arket med det automatiska filtret du använder, ändra det till ditt behov.

3. Och sedan spara och stäng det här kodfönstret, nu när du ändrar de filtrerade uppgifterna Filter funktionen uppdateras automatiskt på en gång, se skärmdump:

doc auot uppdateringsfilter 3


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 (36)
Klassad 5 av 5 · 1 betyg
Denna kommentar minimerades av moderatoren på webbplatsen
hej, hur kan jag använda allt detta i google finance? Tks
Denna kommentar minimerades av moderatoren på webbplatsen
Nice.. verkligen jag behöver det
Denna kommentar minimerades av moderatoren på webbplatsen
Jag vill ha en ändring på ett ark för att få flera andra ark att autofiltrera, hur ändrar jag den här koden? Ex: Blad A ändras, vilket gör att Blad1, Blad2 och Blad3 tillämpar sitt autofilter. Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Jag gör detta för en front i ark där cellen är satt till =ark1!E6. Det kommer inte att tillämpa filter när det ändras. Om jag ändrar siffran på baksidan justerar den framsidan men filtrerar inte. Om du justerar formeln för att filtrera kriterierna tillämpas den igen. Vad kan jag göra?
Denna kommentar minimerades av moderatoren på webbplatsen
Använd denna
Private Sub Work_Change(ByVal Target As Range)
Activesheet.AutoFilter.ApplyFilter
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Jag kan inte alls få det här att fungera för mig. Jag försöker ta från ett masterblad och låta det bara ta de jobb som gäller vissa projektledare på varje flik som står med deras namn. Jag vill också att den ska uppdateras automatiskt när jag gör ändringar.
Denna kommentar minimerades av moderatoren på webbplatsen
detta kommando alla falska gör ingenting. helt försök men ingen användning av.
Denna kommentar minimerades av moderatoren på webbplatsen
Fungerar utmärkt och sparar mig mycket tid och krångel.. Riktigt bra tips.. Stort tack för hjälpen
Denna kommentar minimerades av moderatoren på webbplatsen
Denna lösning fungerar perfekt. Tack för att du skrev det! Om någon har problem finns det några saker att tänka på.

Först anropas händelsen Worksheet_Change ark för ark. Detta innebär att om du har flera ark som har filter som du behöver uppdateras, måste du svara på alla dessa händelser. En Worksheet_Change subrutin för varje kalkylblad, inte en subrutin för hela arbetsboken (ett undantag - se noten nedan).

För det andra, och en uppföljning till den första, måste koden placeras i kodmodulen som är specifik för det kalkylblad som ska övervakas. Det är lätt att (oavsiktligt) byta kodmoduler när du väl kommer in i VB-redigeraren, så man måste vara noga med att placera den specifikt för det ark du vill övervaka för dataändringar.

För det tredje är detta obekräftat, men möjligen en felpunkt. I exemplet används arknamnen "Sheet1", "Sheet2" etc. Om du har bytt namn på arken kan du behöva uppdatera koden. Notera att i exemplet har Sheet7 fått namnet "dfdf". Om du vill uppdatera filtret där, måste du använda;
Sheets("dfdf"). AutoFilter.ApplyFilter
inte;
Sheets("Sheet7"). AutoFilter.ApplyFilter

Det kan vara bra att uppdatera artikeln inklusive ett exempel med ett bytt namn.


Slutligen, om du vill övervaka ett ark för dataändringar, men uppdatera filter på flera ark, behöver du bara en subrutin, placerad i kodmodulen för det kalkylblad du övervakar. Koden kommer att se ut ungefär så här;

# (koden måste placeras i kalkylbladet för att övervakas för dataändringar)
Privata delarkivsförändring (ByVal-mål som område)
Sheets("Sheet1"). AutoFilter.ApplyFilter
Sheets("Sheet2"). AutoFilter.ApplyFilter
Sheets("Sheet3"). AutoFilter.ApplyFilter
Sheets("Sheet4"). AutoFilter.ApplyFilter
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Mike,
Tack för din detaljerade förklaring.
Denna kommentar minimerades av moderatoren på webbplatsen
Bra förklaring, tack.

Men hur utlöser jag Sheets ("Sheet3"). AutoFilter.ApplyFilter när ett nytt ark skapas?
Eftersom jag inte kan skriva koden du nämnde på ett ark som inte finns ännu
Denna kommentar minimerades av moderatoren på webbplatsen
Bra tack!
Denna kommentar minimerades av moderatoren på webbplatsen
fungerar som en mästare, och så enkelt. tack så mycket!
Denna kommentar minimerades av moderatoren på webbplatsen
Det här verkar bra. Kan du berätta för mig hur man gör samma sak för Sortera istället för Filter?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Chris,
Kanske kan följande artikel lösa ditt problem, vänligen se:

https://www.extendoffice.com/documents/excel/2592-excel-auto-sort-by-value.html

Vänligen prova det!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, det fungerar utmärkt, dock bara när man manuellt ändrar data i tabellen.

Jag har en filtrerad tabell i stil med "topp tio/ledarbräda" som fylls i från datainmatning på ett separat kalkylblad (faktiskt går data igenom 3 kalkylblad innan jag kommer till bordet). När data ändras i kalkylbladet för datainmatning uppdateras resultattabellens siffror, men filtret uppdateras inte automatiskt.
Några idéer om hur man gör det?
Mycket tacksam.
Alex
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har samma problem med henne. Kan någon hjälpa oss?
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har samma problem. Jag försöker autofiltrera blad 2 som innehåller data som kommer från blad 1. Det fungerar bara om jag ändrar data på blad 2, inte på blad 1.
Några tankar om varför detta inte fungerar och hur man fixar det?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, det här verkar fungera utmärkt men jag har problem när det finns mer än ett filter på samma kalkylblad (flik). Jag konverterade cellintervallet till en tabell för att tillåta separata och flera filter inom samma kalkylblad. Det här exemplet verkar bara uppdatera en av tabellerna/filtren. Några förslag på hur man uppdaterar ALLA tabeller/filter i ett kalkylblad?

Många tack,

Tom
Denna kommentar minimerades av moderatoren på webbplatsen
hej Tom
Koden i den här artikeln fungerar bra för flera tabeller i ett kalkylblad, du behöver bara trycka på Enter efter att ha ändrat data istället för att klicka till en annan cell.
Vänligen prova det.
Denna kommentar minimerades av moderatoren på webbplatsen
terima Kasih

sangat membantu
Denna kommentar minimerades av moderatoren på webbplatsen
Denna kommentar minimerades av moderatoren på webbplatsen
Lysande och enkel att göra. Tack så mycket!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Den här koden fungerar utmärkt, tack så mycket.

Jag har dock ett litet problem med det - om jag ändrar värden i någon cell som inte är en del av tabellen, får jag ett Runtime-fel som säger:

"Run-time error '91':

Objektvariabel eller Med blockvariabel ej inställd"


Jag har alternativ för att felsöka eller avsluta, alternativet att fortsätta är nedtonat. Jag kan klicka på "Avsluta" och koden fungerar fortfarande, men det är väldigt irriterande att behöva hantera detta popup-fönster efter varje ändring.

Någon som har liknande erfarenheter eller har ett förslag på hur man kan lösa detta?

Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej David,
För att lösa ditt problem kan du använda följande kod:

Privata delarkivsförändring (ByVal-mål som område)
On Error Resume Next
Sheets("Sheet3"). AutoFilter.ApplyFilter
End Sub

Prova det, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Skyyang,


Jag har implementerat din lösning och den är verkligen fixad.

Tack så mycket!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej jag har haft samma problem, klistrade in den nya koden och ändrade namnet på arket men sedan händer ingenting, filtret uppdateras inte
Denna kommentar minimerades av moderatoren på webbplatsen
samma problem här också, någon uppdaterad lösning?
Denna kommentar minimerades av moderatoren på webbplatsen
Kan inte få detta att fungera alls på office 365
några förslag
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, tack så mycket för hjälpen. Något fungerar inte som det ska för mig. Här är historien.

Blad1 har variabel data. Blad3 har statisk data och filter. Filterkriterier på "Sheet3" kommer från Sheet1. Blad1 har data som kommer från filtrerade resultat på Blad3.

Blad 3 har kod:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A1:U14"). AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A22:U23"), CopyToRange:=Range("A25:U26"), Unique:=False
End Sub

Det fungerar utmärkt om jag gör något på Sheet3. Inga problem. Tack!

Först hade jag kod på Sheet1:

Privata delarkivsförändring (ByVal-mål som område)
Sheets("Sheet3"). AutoFilter.ApplyFilter
End Sub

Vilket resulterade i felet "Runtime error 91, Object Variable or With Block not Set".

Jag ändrade koden baserat på kommentarer till att vara:

Privata delarkivsförändring (ByVal-mål som område)
On Error Resume Next
Sheets("Sheet3"). AutoFilter.ApplyFilter
End Sub

Nu får jag inget fel, men data på Sheet3 och därför Sheet1 ändras inte. Med andra ord, händelsen att tillämpa filtret på Sheet3 inträffar inte när jag gör en ändring på Sheet1. Det spelar ingen roll om jag slår eller klicka på en annan cell efter att ha ändrat cellen för Sheet3-filterkriterier som är inställd på Sheet1.

För övrigt förväntar jag mig att om jag ville ha flera celler på Sheet1 som orsakade filter på Sheet 4 och 5 förutom Sheet3, skulle jag behöva koden på Sheet 1 för att läsa:

Privata delarkivsförändring (ByVal-mål som område)
On Error Resume Next
Sheets("Sheet3"). AutoFilter.ApplyFilter
Sheets("Sheet4"). AutoFilter.ApplyFilter
Sheets("Sheet5"). AutoFilter.ApplyFilter
End Sub

Tack igen!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Det här är en bra bit kod tack. Det enda problemet jag har är att jag använder en rullgardinsmeny på ett separat diagramblad. Om jag manuellt ändrar värdet i cellen som är kopplad till rullgardinsmenyn fungerar det. Men när jag försöker bara använda rullgardinsmenyn kommer den inte att uppdateras. Några tankar?
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har faktiskt data från en annan Excel-fil som importerades i ett Excelark med namnet "Databas". Sedan importerar jag dessa data i samma Excel-fil men i ett annat ExcelSheet "Översikt". Jag vill när data ändras i den ursprungliga källan, att filtret gäller i bladet "Översikt". Tack på förhand för den som kan hjälpa mig :). PS kan inte använda VBA i det första excelsarket
Det finns inga kommentarer här ännu
Ladda fler
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