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

Cum se reaplică automat filtrarea automată atunci când datele se schimbă în Excel?

În Excel, când aplicați fișierul Filtru funcția de filtrare a datelor, rezultatul filtrului nu va fi modificat automat odată cu modificările de date din datele filtrate. De exemplu, când filtrez toate Apple din date, acum schimb una dintre datele filtrate în BBBBBB, dar rezultatul nu va fi modificat, precum și următoarea captură de ecran afișată. În acest articol, voi vorbi despre cum să reaplicați automat filtrarea automată atunci când datele se schimbă în Excel.

filtrul de reîmprospătare automată a documentelor 1

Reaplică automat filtrul automat atunci când datele se schimbă cu codul VBA


săgeată albastru dreapta balon Reaplică automat filtrul automat atunci când datele se schimbă cu codul VBA

În mod normal, puteți reîmprospăta datele filtrului făcând clic pe caracteristica Reaplicare manual, dar, aici, voi introduce un cod VBA pentru a vă reîmprospăta automat datele filtrului atunci când datele se modifică, faceți următoarele:

1. Accesați foaia de lucru pe care doriți să o reîmprospătați automat când se modifică datele.

2. Faceți clic dreapta pe fila foaie și selectați Afișați codul din meniul contextual, în fereastra pop-out Microsoft Visual Basic pentru aplicații fereastra, copiați și lipiți următorul cod în fereastra goală a modulului, vedeți captura de ecran:

Cod VBA: reaplică automat filtrul atunci când datele se schimbă:

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

filtrul de reîmprospătare automată a documentelor 2

notițe: În codul de mai sus, Indicatori din 3 este numele foii cu filtru automat pe care o utilizați, vă rugăm să o modificați în funcție de nevoile dvs.

3. Și apoi salvați și închideți această fereastră de cod, acum, când schimbați datele filtrate, fișierul Filtru funcția va fi reîmprospătată automat, vezi captura de ecran:

filtrul de reîmprospătare automată a documentelor 3


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (36)
Evaluat 5 din 5 · evaluări 1
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, cum pot folosi toate acestea în Google Finance? Tks
Acest comentariu a fost redus la minimum de moderatorul de pe site
Frumos... chiar am nevoie de el
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreau o modificare pe o singură foaie pentru a face ca mai multe foi să se filtreze automat, cum pot schimba acest cod? De exemplu: SheetA este schimbat, ceea ce face ca Sheet1, Sheet2 și Sheet3 să aplice autofiltrul. Mulțumiri!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Fac asta pentru o foaie frontală în care celula este setată la =sheet1!E6. Nu va aplica filtrul atunci când se schimbă. Dacă schimb numărul din foaia din spate, se ajustează partea din față, dar nu filtrează. Dacă ajustați formula pentru a-i filtra criteriile, se aplică din nou. Ce pot sa fac?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Utilizați această
Private Sub Work_Change(ByVal Target As Range)
Activesheet.AutoFilter.ApplyFilter
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu pot face ca asta să funcționeze pentru mine deloc. Încerc să iau dintr-o fișă principală și să o iau doar joburile care se aplică anumitor manageri de proiect în fiecare filă care este cu numele lor. De asemenea, vreau să se reîmprospăteze automat când fac modificări.
Acest comentariu a fost redus la minimum de moderatorul de pe site
această comandă nu face nimic. încercați complet, dar nu folosiți.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Funcționează grozav și mă economisește mult timp și mă încurcă... Sfat foarte grozav.. Mulțumesc pentru ajutor
Acest comentariu a fost redus la minimum de moderatorul de pe site
Această soluție funcționează perfect. Mulțumesc că ai scris-o! Dacă cineva are probleme, există câteva lucruri de luat în considerare.

În primul rând, evenimentul Worksheet_Change este apelat foaie cu foaie. Aceasta înseamnă că, dacă aveți mai multe foi care au filtre pe care trebuie să le actualizați, va trebui să răspundeți la toate aceste evenimente. O foaie de lucru_Change subrutină pentru fiecare foaie de lucru, nu o subrutină pentru întreg registrul de lucru (o excepție - vezi nota de mai jos).

În al doilea rând, și în continuarea primului, codul trebuie plasat în modulul de cod specific foii de lucru care trebuie monitorizată. Este ușor să comutați (în mod neatenționat) modulele de cod odată ce intri în editorul VB, așa că trebuie să aveți grijă să îl plasați specific pentru foaia pe care doriți să o monitorizați pentru modificări de date.

În al treilea rând, acest lucru este neconfirmat, dar este posibil un punct de eroare. Exemplul folosește nume de foi „Sheet1”, „Sheet2”, etc. Dacă ați redenumit foile, poate fi necesar să actualizați codul. Rețineți că în exemplu, Sheet7 a primit numele „dfdf”. Dacă doriți să actualizați filtrul acolo, ar trebui să utilizați;
Sheets("dfdf").AutoFilter.ApplyFilter
nu;
Sheets(„Sheet7”).AutoFilter.ApplyFilter

Ar putea fi bine să actualizați articolul, inclusiv un exemplu cu o foaie redenumită.


În cele din urmă, dacă doriți să monitorizați o singură foaie pentru modificări de date, dar să actualizați filtrele pe mai multe foi, atunci aveți nevoie de o singură subrutină, plasată în modulul de cod al foii de lucru pe care o monitorizați. Codul va arăta cam așa;

# (codul trebuie plasat în foaia de lucru pentru a fi monitorizat pentru modificările datelor)
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Sheets(„Sheet1”).AutoFilter.ApplyFilter
Sheets(„Sheet2”).AutoFilter.ApplyFilter
Sheets(„Sheet3”).AutoFilter.ApplyFilter
Sheets(„Sheet4”).AutoFilter.ApplyFilter
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Mike,
Vă mulțumesc pentru explicația dumneavoastră detaliată.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Super explicație, mulțumesc.

Dar cum declanșez Sheets(„Sheet3”).AutoFilter.ApplyFilter atunci când este creată o nouă foaie?
Din moment ce nu pot scrie codul pe care l-ați menționat pe o foaie care nu există încă
Acest comentariu a fost redus la minimum de moderatorul de pe site
Super multumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
funcționează ca un campion și atât de simplu. mulțumesc foarte mult!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Asta pare grozav. Puteți să-mi spuneți cum să fac același lucru pentru Sortare, nu pentru Filtrare, vă rog?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Chris,
Este posibil ca următorul articol să vă rezolve problema, vă rugăm să vizualizați:

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

Vă rugăm să încercați!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, funcționează grozav, totuși numai când schimbi manual datele din tabel.

Am un tabel filtrat în stil „top ten/leader board” care este populat din introducerea datelor pe o foaie de lucru separată (de fapt, datele trec prin 3 foi de lucru înainte de a ajunge la tabel). Când datele sunt modificate în foaia de lucru de introducere a datelor, cifrele din tabelul de lider se actualizează, dar filtrul nu se reîmprospătează automat.
Aveți idei despre cum să faceți asta?
Rămân îndatorat.
Alex
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am aceeasi problema cu ea. Ne poate ajuta cineva?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am aceeasi problema. Încerc să filtrez automat foaia 2 care conține date care provin din foaia 1. funcționează doar dacă schimb datele de pe foaia 2, nu de pe foaia 1.
Aveți vreo idee despre de ce acest lucru nu funcționează și despre cum să o remediați?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, se pare că funcționează excelent, dar am probleme când există mai multe filtre pe aceeași foaie de lucru (filă). Am convertit intervalul de celule într-un tabel pentru a permite filtre separate și multiple în cadrul aceleiași foi de lucru. Acest exemplu pare doar pentru a actualiza unul dintre tabele/filtre. Aveți sugestii despre cum să actualizați TOATE tabelele/filtrele dintr-o foaie de lucru?

Multe mulţumiri,

Tom
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Tom,
Codul din acest articol funcționează bine pentru mai multe tabele dintr-o foaie de lucru, trebuie doar să apăsați tasta Enter după ce modificați datele în loc să faceți clic pe altă celulă.
Vă rugăm să încercați.
Acest comentariu a fost redus la minimum de moderatorul de pe site
terima Kasih

sangat membantu
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru nu funcționează cu filtrul bazat pe selecția listei https://www.extendoffice.com/documents/excel/4113-excel-filter-based-on-list-selection.html
Acest comentariu a fost redus la minimum de moderatorul de pe site
Genial și simplu de făcut. Multumesc mult!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Acest cod funcționează excelent, mulțumesc mult.

Totuși, am o mică problemă cu el - dacă schimb valorile în orice celulă care nu face parte din tabel, mi se prezintă o eroare de rulare care spune:

„Eroare de rulare „91”:

Variabila obiect sau Cu variabila bloc neconfigurată"


Am opțiuni pentru Debug sau End, opțiunea pentru Continuare este inactivă. Pot să dau clic pe „End” și codul încă funcționează, totuși este foarte enervant să faci față acestei ferestre pop-up după fiecare modificare.

Are cineva o experiență similară sau o sugestie despre cum să rezolvi asta?

Multumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună David,
Pentru a vă rezolva problema, puteți aplica următorul cod:

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
La data de eroare CV următoare
Sheets(„Sheet3”).AutoFilter.ApplyFilter
End Sub

Vă rugăm să încercați, sper că vă poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Skyyang,


Am implementat soluția ta și este într-adevăr remediată.

Multumesc mult!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, am avut aceeași problemă, am lipit noul cod și am schimbat numele foii, dar apoi nu se întâmplă nimic, filtrul nu se actualizează
Acest comentariu a fost redus la minimum de moderatorul de pe site
aceeași problemă și aici, vreo soluție actualizată?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu pot face asta să funcționeze deloc pe Office 365
orice sugestii
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, mulțumesc mult pentru ajutor. Ceva nu merge bine pentru mine. Iată povestea.

Sheet1 are date variabile. Sheet3 are date statice și filtru. Criteriile de filtrare pentru „Sheet3” provin din Sheet1. Sheet1 are date care provin din rezultate filtrate pe Sheet3.

Sheet3 are codul:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Interval(„A1:U14”). Acțiune de filtru avansat:=xlFilterCopy, CriteriaRange:=Range(„A22:U23”), CopyToRange:=Range(„A25:U26”), Unic:=False
End Sub

Funcționează grozav dacă fac ceva pe Sheet3. Fără probleme. Mulțumesc!

La început aveam cod pe Sheet1:

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Sheets(„Sheet3”).AutoFilter.ApplyFilter
End Sub

Ceea ce a dus la eroarea „Eroare de rulare 91, variabilă obiect sau cu bloc nesetat”.

Am schimbat codul pe baza comentariilor pentru a fi:

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
La data de eroare CV următoare
Sheets(„Sheet3”).AutoFilter.ApplyFilter
End Sub

Acum nu primesc o eroare, dar datele din Sheet3 și, prin urmare, Sheet1 nu se modifică. Cu alte cuvinte, evenimentul de aplicare a filtrului la Sheet3 nu are loc atunci când fac o modificare pe Sheet1. Nu contează dacă lovesc sau faceți clic pe altă celulă după ce ați schimbat celula criteriilor de filtru Sheet3 care este setată pe Sheet1.

Deoparte, mă aștept că, dacă aș vrea să am mai multe celule pe Foaia 1 care au cauzat filtre pe Foile 4 și 5 în plus față de Foaia 3, aș avea nevoie de codul de pe Foaia 1 pentru a citi:

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
La data de eroare CV următoare
Sheets(„Sheet3”).AutoFilter.ApplyFilter
Sheets(„Sheet4”).AutoFilter.ApplyFilter
Sheets(„Sheet5”).AutoFilter.ApplyFilter
End Sub

Multumesc din nou!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Acesta este un cod grozav, mulțumesc. Singura problemă pe care o am este că folosesc un meniu derulant pe o foaie de diagramă separată. Dacă schimb manual valoarea din celula asociată cu meniul drop-down, funcționează. Dar când încerc să folosesc meniul drop-down, nu se va actualiza. Ceva gânduri?
Acest comentariu a fost redus la minimum de moderatorul de pe site
De fapt, am date dintr-un alt fișier Excel care a fost importat într-o foaie Excel cu numele „Bază de date”. Apoi import aceste date în același fișier Excel, dar într-o altă „Prezentare generală” ExcelSheet. Vreau ca atunci când datele se schimbă în sursa inițială, ca filtrul să se aplice în foaia „Prezentare generală”. Multumesc pentru cel care ma poate ajuta :). PS nu pot folosi VBA în prima foaie Excel
Nu există comentarii postate aici încă
Încărcați mai
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL