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

Kako samodejno znova uporabiti samodejni filter, ko se podatki spremenijo v Excelu?

V Excelu, ko uporabite filter funkcija za filtriranje podatkov, se rezultat filtriranja ne bo samodejno spremenil s spremembami podatkov v filtriranih podatkih. Na primer, ko iz podatkov filtriram vsa jabolka, zdaj enega od filtriranih podatkov spremenim v BBBBBB, vendar rezultat ne bo spremenjen tako kot prikazan naslednji posnetek zaslona. V tem članku bom govoril o tem, kako samodejno ponovno uporabiti samodejni filter, ko se podatki spremenijo v Excelu.

doc auot filter za osvežitev 1

Samodejno znova uporabi samodejni filter, ko se podatki spremenijo s kodo VBA


puščica modri desni mehurček Samodejno znova uporabi samodejni filter, ko se podatki spremenijo s kodo VBA

Običajno lahko podatke filtra osvežite tako, da ročno kliknete funkcijo Ponovna uporaba, toda tukaj bom predstavil kodo VBA, ki bo samodejno osvežila podatke filtra, ko se podatki spremenijo, naredite naslednje:

1. Odprite delovni list, ki ga želite samodejno osvežiti, ko se podatki spremenijo.

2. Z desno miškino tipko kliknite zavihek lista in izberite Ogled kode iz kontekstnega menija v izpuščenem Microsoft Visual Basic za aplikacije okno, kopirajte in prilepite naslednjo kodo v prazno okno modula, glejte posnetek zaslona:

Koda VBA: Samodejno ponovno uporabi filter pri spremembi podatkov:

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

doc auot filter za osvežitev 2

Opombe: V zgornji kodi, 3 Sheet je ime lista z samodejnim filtrom, ki ga uporabljate, ga spremenite po svojih željah.

3. Nato shranite in zaprite to okensko okno, ko spremenite filtrirane podatke, filter funkcija se bo samodejno osvežila naenkrat, glejte posnetek zaslona:

doc auot filter za osvežitev 3


Najboljša orodja za pisarniško produktivnost

Kutools za Excel rešuje večino vaših težav in poveča vašo produktivnost za 80%

  • Ponovna uporaba: Hitro vstavite zapletene formule, grafikoni in vse, kar ste že uporabljali; Šifriraj celice z geslom; Ustvari poštni seznam in pošiljanje e-pošte ...
  • Vrstica Super Formula (enostavno urejanje več vrstic besedila in formule); Bralna postavitev (enostavno branje in urejanje velikega števila celic); Prilepite v filtrirani obseg...
  • Združi celice / vrstice / stolpce brez izgube podatkov; Vsebina razdeljenih celic; Združi podvojene vrstice / stolpce... prepreči podvojene celice; Primerjaj obsege...
  • Izberite Duplicate ali Unique Vrstice; Izberite prazne vrstice (vse celice so prazne); Super Find in Fuzzy Find v mnogih delovnih zvezkih; Naključna izbira ...
  • Natančna kopija Več celic brez spreminjanja sklica formule; Samodejno ustvarjanje referenc na več listov; Vstavi oznake, Potrditvena polja in še več ...
  • Izvleček besedila, Dodaj besedilo, Odstrani po položaju, Odstrani presledek; Ustvari in natisni vmesne seštevke strani Pretvarjanje med vsebino celic in komentarji...
  • Super filter (shranite in uporabite sheme filtrov za druge liste); Napredno razvrščanje glede na mesec / teden / dan, pogostost in drugo; Poseben filter s krepko, ležeče ...
  • Združite delovne zvezke in delovne liste; Spoji tabele na podlagi ključnih stolpcev; Razdelite podatke na več listov; Paketna pretvorba xls, xlsx in PDF...
  • Več kot 300 zmogljivih funkcij. Podpira Office / Excel 2007-2021 in 365. Podpira vse jezike. Enostavna uvedba v vašem podjetju ali organizaciji. 30-dnevna brezplačna preizkusna različica vseh funkcij. 60-dnevna garancija vračila denarja.
zavihek kte 201905

Kartica Office prinaša vmesnik z zavihki v Office in poenostavi vaše delo

  • Omogočite urejanje in branje z zavihki v Wordu, Excelu, PowerPointu, Publisher, Access, Visio in Project.
  • Odprite in ustvarite več dokumentov v novih zavihkih istega okna in ne v novih oknih.
  • Poveča vašo produktivnost za 50%in vsak dan zmanjša na stotine klikov miške za vas!
dno pisarniške mize
Komentarji (36)
Ocenjeno 5 iz 5 · 1 ocene
Ta komentar je moderator na spletnem mestu minimiziral
zdravo, kako lahko vse to uporabim v google finance? Tks
Ta komentar je moderator na spletnem mestu minimiziral
Lepo.. res ga potrebujem
Ta komentar je moderator na spletnem mestu minimiziral
Želim spremembo na enem listu, da povzroči samodejno filtriranje več drugih listov, kako spremenim to kodo? Na primer: SheetA je spremenjena, kar povzroči, da Sheet1, Sheet2 in Sheet3 uporabijo svoj samodejni filter. Hvala!
Ta komentar je moderator na spletnem mestu minimiziral
To počnem za sprednji del lista, če je celica nastavljena na =list1!E6. Ko se spremeni, ne bo uporabil filtra. Če spremenim številko na zadnji strani, se prilagodi sprednji strani, vendar ne filtrira. Če prilagodite formulo za filtriranje meril, se ponovno uporabi. Kaj lahko naredim?
Ta komentar je moderator na spletnem mestu minimiziral
Uporabite to
Private Sub Work_Change (ByVal Target As Range)
Activesheet.AutoFilter.ApplyFilter
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Sploh ne morem doseči, da bi to delovalo zame. Poskušam vzeti iz glavnega lista in naj vzame samo delovna mesta, ki veljajo za določene vodje projektov na vsakem zavihku z njihovimi imeni. Prav tako želim, da se samodejno osveži, ko naredim spremembe.
Ta komentar je moderator na spletnem mestu minimiziral
ta ukaz vse lažno ne naredi nič. popolnoma poskusite, vendar brez koristi.
Ta komentar je moderator na spletnem mestu minimiziral
Deluje odlično in mi prihrani veliko časa in zafrkavanja.. Res odličen nasvet.. Najlepša hvala za vašo pomoč
Ta komentar je moderator na spletnem mestu minimiziral
Ta rešitev deluje odlično. Hvala, ker ste to napisali! Če ima kdo težave, je treba upoštevati nekaj stvari.

Prvič, dogodek Worksheet_Change se kliče na podlagi lista za listom. To pomeni, da če imate več listov s filtri, ki jih morate posodobiti, se boste morali odzvati na vse te dogodke. En podprogram Worksheet_Change za vsak delovni list, ne en podprogram za celoten delovni zvezek (ena izjema – glejte spodnjo opombo).

Drugič, in nadaljevanje prvega, je treba kodo postaviti v kodni modul, ki je specifičen za delovni list, ki ga je treba spremljati. Njegove module kode je enostavno (nehote) preklopiti, ko vstopite v urejevalnik VB, zato morate paziti, da ga postavite posebej na list, ki ga želite spremljati glede sprememb podatkov.

Tretjič, to ni potrjeno, vendar je verjetno točka napake. Primer uporablja imena listov "Sheet1", "Sheet2" itd. Če ste liste preimenovali, boste morda morali posodobiti kodo. Upoštevajte, da je v primeru Sheet7 dobil ime "dfdf". Če bi želeli tam posodobiti filter, bi ga morali uporabiti;
Listi("dfdf").AutoFilter.ApplyFilter
ne;
Listi("Sheet7").AutoFilter.ApplyFilter

Morda bi bilo dobro posodobiti članek, vključno s primerom s preimenovanim listom.


Končno, če želite spremljati spremembe podatkov na enem listu, a posodobiti filtre na več listih, potem potrebujete samo en podprogram, ki je nameščen v kodnem modulu delovnega lista, ki ga spremljate. Koda bo videti nekako takole;

# (kodo je treba namestiti v delovni list, da se spremljajo spremembe podatkov)
Zasebni poddelovni list_Spremeni (ByVal Target As Range)
Listi("Sheet1").AutoFilter.ApplyFilter
Listi("Sheet2").AutoFilter.ApplyFilter
Listi("Sheet3").AutoFilter.ApplyFilter
Listi("Sheet4").AutoFilter.ApplyFilter
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, Mike,
Hvala za vašo podrobno razlago.
Ta komentar je moderator na spletnem mestu minimiziral
Odlična razlaga, hvala.

Toda kako sprožim Sheets("Sheet3").AutoFilter.ApplyFilter, ko je ustvarjen nov list?
Ker kode, ki ste jo omenili, ne morem napisati na list, ki še ne obstaja
Ta komentar je moderator na spletnem mestu minimiziral
Super hvala!
Ta komentar je moderator na spletnem mestu minimiziral
deluje kot šampion in tako preprosto. najlepša hvala!
Ta komentar je moderator na spletnem mestu minimiziral
To se zdi super. Ali mi lahko poveste, kako narediti enako za sortiranje namesto za filtriranje, prosim?
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, Chris,
Morda lahko naslednji članek reši vašo težavo, prosimo, da si ogledate:

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

Prosim poskusite!
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, to deluje odlično, vendar le pri ročnem spreminjanju podatkov v tabeli.

Imam filtrirano tabelo v slogu 'najboljših deset/vodstveno tabelo, ki se napolni iz vnosa podatkov na ločenem delovnem listu (pravzaprav gredo podatki skozi 3 delovne liste, preden pridejo do tabele). Ko se podatki spremenijo v delovnem listu za vnos podatkov, se posodablja tabela lestvice vodilnih, vendar se filter ne osveži samodejno.
Kakšne ideje, kako to narediti?
Hvaležen.
Alex
Ta komentar je moderator na spletnem mestu minimiziral
jaz imam isti problem z njo. Nam lahko kdo pomaga?
Ta komentar je moderator na spletnem mestu minimiziral
imam isto težavo. Poskušam samodejno filtrirati list 2, ki vsebuje podatke, ki prihajajo iz lista 1. Deluje samo, če spremenim podatke na listu 2, ne na listu 1.
Kakšne misli o tem, zakaj to ne deluje in kako to popraviti?
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, zdi se, da to deluje odlično, vendar imam težave, ko je na istem delovnem listu (zavihku) več kot en filter. Razpon celic sem pretvoril v tabelo, da sem omogočil ločene in več filtrov znotraj istega delovnega lista. Zdi se, da ta primer posodobi samo eno od tabel/filtrov. Kakšen predlog, kako posodobiti VSE tabele/filtre na delovnem listu?

Najlepša hvala,

Tom
Ta komentar je moderator na spletnem mestu minimiziral
Živjo Tom,
Koda v tem članku dobro deluje za več tabel na delovnem listu, po spremembi podatkov morate samo pritisniti tipko Enter, namesto da kliknete na drugo celico.
Prosim poskusite.
Ta komentar je moderator na spletnem mestu minimiziral
terima Kasih

sangat membantu
Ta komentar je moderator na spletnem mestu minimiziral
Ta komentar je moderator na spletnem mestu minimiziral
Briljantno in enostavno za izvedbo. Najlepša hvala!
Ta komentar je moderator na spletnem mestu minimiziral
Hi,

Ta koda deluje odlično, hvala lepa.

Vendar imam s tem eno majhno težavo - če spremenim vrednosti v kateri koli celici, ki ni del tabele, se mi prikaže napaka Runtime, ki pravi:

"Napaka med izvajanjem '91':

Spremenljivka predmeta ali S spremenljivko bloka ni nastavljena"


Imam možnosti Odpravljanje napak ali Konec, možnost Nadaljuj je zatemnjena. Lahko kliknem na "Končaj" in koda še vedno deluje, vendar je zelo nadležno, da se po vsaki spremembi ukvarjam s tem pojavnim oknom.

Ima kdo podobne izkušnje ali kakšen predlog, kako to urediti?

Hvala!
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, David,
Za rešitev težave lahko uporabite naslednjo kodo:

Zasebni poddelovni list_Spremeni (ByVal Target As Range)
On Error Resume Next
Listi("Sheet3").AutoFilter.ApplyFilter
End Sub

Prosim, poskusite, upam, da vam lahko pomaga!
Ta komentar je moderator na spletnem mestu minimiziral
Živjo Skyyang,


Izvedel sem vašo rešitev in je res popravljena.

Najlepša hvala!
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, imel sem isto težavo, prilepil sem novo kodo in spremenil ime lista, vendar se potem nič ne zgodi, filter se ne posodobi
Ta komentar je moderator na spletnem mestu minimiziral
ista težava tudi tukaj, kakšna posodobljena rešitev?
Ta komentar je moderator na spletnem mestu minimiziral
Tega sploh ne morem spraviti v delo na Office 365
Kakšen predlog
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, najlepša hvala za pomoč. Nekaj ​​mi ne dela prav. Tukaj je zgodba.

List 1 ima spremenljive podatke. Sheet3 ima statične podatke in filter. Kriteriji filtra na "Sheet3" prihajajo iz Sheet1. Sheet1 ima podatke, ki izvirajo iz filtriranih rezultatov na Sheet3.

Sheet3 ima kodo:

Zasebni pod delovni list_Sprememba izbora(ByVal Target As Range)
Range("A1:U14").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A22:U23"), CopyToRange:=Range("A25:U26"), Unique:=False
End Sub

Deluje odlično, če kaj naredim na Sheet3. Brez težav. Hvala vam!

Sprva sem imel kodo na Sheet1:

Zasebni poddelovni list_Spremeni (ByVal Target As Range)
Listi("Sheet3").AutoFilter.ApplyFilter
End Sub

Posledica tega je bila napaka "Napaka izvajanja 91, spremenljivka predmeta ali z nastavljenim blokom".

Na podlagi komentarjev sem spremenil kodo na:

Zasebni poddelovni list_Spremeni (ByVal Target As Range)
On Error Resume Next
Listi("Sheet3").AutoFilter.ApplyFilter
End Sub

Zdaj ne dobim napake, vendar se podatki na Sheet3 in zato Sheet1 ne spremenijo. Z drugimi besedami, do primera uporabe filtra za Sheet3 se ne zgodi, ko naredim spremembo na Sheet1. Ni važno, če sem udaril ali kliknite drugo celico, potem ko spremenite celico meril filtra Sheet3, ki je nastavljena na Sheet1.

Poleg tega pričakujem, da če bi želel imeti več celic na listu 1, ki povzročajo filtre na listih 4 in 5 poleg lista 3, bi potreboval kodo na listu 1, da se glasi:

Zasebni poddelovni list_Spremeni (ByVal Target As Range)
On Error Resume Next
Listi("Sheet3").AutoFilter.ApplyFilter
Listi("Sheet4").AutoFilter.ApplyFilter
Listi("Sheet5").AutoFilter.ApplyFilter
End Sub

Še enkrat hvala!
Ta komentar je moderator na spletnem mestu minimiziral
Hi,

To je odličen del kode, hvala. Edina težava, ki jo imam, je, da uporabljam spustni meni na ločenem listu grafikona. Če ročno spremenim vrednost v celici, povezani s spustnim seznamom, deluje. Toda ko poskušam uporabiti spustni meni, se ne posodobi. Kakšne misli?
Ta komentar je moderator na spletnem mestu minimiziral
Pravzaprav imam podatke iz druge Excelove datoteke, ki je bila uvožena v Excelsheet z imenom "Baza podatkov". Nato uvozim te podatke v isto Excelovo datoteko, vendar v drugo ExcelSheet "Pregled". Želim, da se, ko se podatki spremenijo v izvirnem viru, uporabi filter v listu "Pregled". Že v naprej hvala za tistega, ki mi lahko pomaga :). PS ne morem uporabljati VBA v prvi excelsheet
Tu še ni objavljenih komentarjev
Obremenitev Več
Pustite vaše komentarje
Objava kot gost
×
Ocenite to objavo:
0   Znaki
Predlagane lokacije

Sledi nam

Copyright © 2009 - www.extendoffice.com. | Vse pravice pridržane. Poganja ga ExtendOffice. | Kazalo
Microsoft in logotip Office sta blagovni znamki ali registrirani blagovni znamki družbe Microsoft Corporation v ZDA in / ali drugih državah.
Zaščiteno s Sectigo SSL