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

Cum se filtrează automat rândurile pe baza valorii celulei din Excel?

În mod normal, funcția de filtrare din Excel ne poate ajuta să filtrăm orice date după cum avem nevoie, dar, uneori, aș dori să filtrăm automat celulele pe baza unei intrări manuale de celule, ceea ce înseamnă că atunci când introduc un criteriu într-o celulă, datele pot fi filtrat automat deodată. Există idei bune pentru a face față acestui loc de muncă în Excel?

Filtrează automat rândurile în funcție de valoarea celulei introdusă cu codul VBA

Filtrează datele după mai multe criterii sau alte condiții specifice, cum ar fi după lungimea textului, după majuscule și minuscule


Filtrează automat rândurile în funcție de valoarea celulei introdusă cu codul VBA

Presupunând că am următoarea gamă de date, acum, când introduc criteriile în celulele E1 și E2, vreau ca datele să fie filtrate automat așa cum se arată în imaginea de mai jos:

filtru auto doc 1

1. Mergeți foaia de lucru pe care doriți să o filtrați automat în funcție de valoarea celulei pe care ați introdus-o.

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 spațiul gol Module fereastră, vezi captura de ecran:

Cod VBA: filtrare automată a datelor în funcție de valoarea celulei introduse:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160606
   If Target.Address = Range("E2").Address Then
       Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
   End If
End Sub

filtru auto doc 2

notițe: În codul de mai sus, A1: C20 este intervalul dvs. de date pe care doriți să îl filtrați, E2 este valoarea țintă pe care doriți să o filtrați pe baza și E1: E2 este criteriul dvs. celula va fi filtrată pe baza. Le puteți schimba după nevoile dvs.

3. Acum, când introduceți criteriile în celulă E1 și E2 și apăsați Intrați cheie, datele dvs. vor fi filtrate automat de valorile celulei.


Filtrează datele după mai multe criterii sau alte condiții specifice, cum ar fi după lungimea textului, după majuscule și minuscule

Filtrați datele după mai multe criterii sau alte condiții specifice, cum ar fi după lungimea textului, după majuscule și minuscule etc.

Kutools pentru Excel'S Super Filtru caracteristica este un utilitar puternic, puteți aplica această caracteristică pentru a finaliza următoarele operații:

  • Filtrează datele cu mai multe criterii; Filtrează datele după lungimea textului;
  • Filtrează datele după majuscule / minuscule; Filtrează data după an / lună / zi / săptămână / trimestru

Kutools pentru Excel: cu mai mult de 300 de programe de completare Excel la îndemână, încercați fără limitări în 30 de zile. Descărcați și proba gratuită acum!


Demo: filtrați automat rândurile pe baza valorii celulei pe care ați introdus-o cu codul VBA


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)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
MULȚUMESC MULT PENTRU FORMULA DE MAI SUS - FUNCȚIONEAZĂ FINE.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am încercat să filtrez o foaie de lucru cu o varietate de coduri (luate de pe diverse site-uri, inclusiv acesta), dar niciunul nu pare să funcționeze. Într-o foaie cu informații din intervalul de celule A101:EF999 (da, una mare), vreau să filtrez automat foaia pe baza unui cod de trei litere pe care îl introduc în celula B5, care ar trebui să corespundă rândurilor care au același cod în coloana B101 -B999. Un fragment de probă ar arăta astfel: ABCDE 5 ABC ... 101 ABC 102 DEF 103 GHI 104 ABC 105 JKL 106 ABC 107 DEF La selectarea „ABC” în celula B5, numai rândurile 101, 104 și 106 nu ar trebui să fie afișate, dar nimic nu trebuie afișat se întâmplă. Există ceva la care trec cu vederea aici? Orice ajutor ar fi foarte apreciat!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum îl anulez? îmi ascunde toate datele.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut, Codul de mai jos funcționează perfect. Cu toate acestea, cum pot dezactiva macrocomanda dacă vreau să defiltrez? Private Sub Worksheet_Change(ByVal Target As Range) „Updateby Extendoffice 20160606 Dacă Target.Address = Range("E2").Address Then Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2") End If End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
În Interval("E2"). Adresa șterge orice intrare. Toate vor „defiltre”.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu merge pentru mine, poate că am Office 2010? nu face nimic :S
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă mulțumesc pentru acest scris! Încerc să ajustez codul pentru a permite o gamă de acceptare.

Exemplu: am introdus 5 și filtrează și afișează doar tot ceea ce este în 5 din 5, (deci 4.5 la 5.5)
Acest comentariu a fost redus la minimum de moderatorul de pe site
funcționează și minunat... mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă mulțumim pentru acest cod. Am încercat să-l modific pentru a funcționa mai bine pentru mine, dar am dificultăți.

Fișa mea conține date din A2:G2280 Coloana A conține nume de străzi. Vreau să pot introduce cel puțin o parte din numele străzii în A1 și să afișez numai date care conțin A1 în totalitate sau în parte. Deci, dacă scriu Bro în A1, aș vedea rândurile care au Broad, Broadway și Brook. Desigur, dacă A1 este gol, aș vedea totul.



Îmi pare rău, nu sunt fluent în limbajul Excel VBA, sunt doar un dispecer 911 care știe că este o modalitate mai ușoară.



Mulțumesc.



marca
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Mark,
Pentru a vă rezolva problema, vă rugăm să aplicați următorul cod VBA:
Notă: În codul de mai jos, A1 este celula în care doriți să introduceți criteriile, A2:D20 este intervalul de date, A este coloana care conține criteriile din care doriți să filtrați, vă rugăm să schimbați referințele de celule la propriile dvs. .

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dim xRg As Range
Dim xRRg As Range
Dim xFNum ca număr întreg
La data de eroare CV următoare
Dacă Target.Address <> Range("A1").Address, apoi Exit Sub
Setați xRg = Range("A2:D20").CurrentRegion
Application.ScreenUpdating = Fals
Dacă Target.Text = "" Atunci
xRg.Rows.Select
Selection.EntireRow.Hidden = Fals
Application.ScreenUpdating = Adevărat
Ieșiți din Sub
Final, dacă
Pentru xFNum = 1 To xRg.Rows.Count
Setați xRRg = xRg.Range(„A” și xFNum)
xRRg.Rows.Select
Dacă InStr(xRRg.Text, Target.Text) > 0 Atunci
Selection.EntireRow.Hidden = Fals
Altfel
Selection.EntireRow.Hidden = Adevărat
Final, dacă
Următorul xFNum
Application.ScreenUpdating = Adevărat
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
Multumesc pentru ajutor.
Am schimbat A2:D20 în A3:G2281 pentru a reprezenta câmpul meu de date. Acum, când tast ceva în celula A1 și tabulația din celule, rândurile 2-109 sunt ascunse. Nu filtrează și afișează doar rândurile care conțin tot sau parțial ceea ce este introdus în celula A1.



Orice idei?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Skyyang,
codul tău funcționează perfect, dar am o întrebare: dacă nu vreau să am un criteriu de filtru în celula A1 și să las celula goală, nu va mai fi afișată nicio linie. Deci totul este filtrat. La fel cum a vrut Mark „Desigur, dacă A1 este gol, aș vedea totul”, nu funcționează, nu-i așa?
Ar fi bine dacă m-ai putea ajuta.
Salutări
Carsten
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Skyyang,
codul tău funcționează perfect, dar am o întrebare: dacă nu vreau să am un criteriu de filtru în celula A1 și să las celula goală, nu va mai fi afișată nicio linie. Deci totul este filtrat. La fel cum a vrut Mark „Desigur, dacă A1 este gol, aș vedea totul”, nu funcționează, nu-i așa?
Ar fi bine dacă m-ai putea ajuta.
Salutări
Carsten
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Carsten,
Când lăsați celula A1 goală, sunt afișate toate rândurile de date, când introduceți orice caracter pe care doriți să îl filtrați, acesta va funcționa corect. Cum este problema dvs., vă rugăm să introduceți foaia cu probleme ca captură de ecran aici.

Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ce se întâmplă dacă aveți GRADE11 și GRADE12, de exemplu. Va arăta filtrul și acestea dacă încercați să filtrați
pe GRADE1?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Bob,
Da, așa cum ați spus, atunci când introduceți o parte a textului pe care doriți să o filtrați, toate celulele care conțin partea textului vor fi filtrate. Deci, dacă tastați Grade1, toate celulele conțin Grade1, Grade11, Grage123... vor fi filtrate.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Scriptul VB a funcționat frumos. Multumesc mult pentru postare!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
'Actualizare de Extendoffice 20160606
Dacă Target.Address = Range("E2").Adresa Atunci
Interval(„A1:C20”).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range(„E1:E2”)
Final, dacă
End Sub


E2 HUCRESI YERINE E SUTUNUNUNA YAZILAN SON SATIRA GORE FILITRELEME YAPABILIR MI


Conform codului mentionat mai sus, se poate face filtrare conform datelor scrise la ultimul rand al coloanei E?


Sper să primesc ajutor și vă mulțumesc pentru ajutor
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Murat,
Codul de mai sus funcționează bine în toată foaia de lucru, trebuie doar să modificați referințele de celule în funcție de nevoile dvs. Vă rugăm să încercați, vă mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu știu cum pot schimba referința celulei.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Există vreo modalitate de a continua să filtreze cu casete suplimentare. Când îl scriu ca ElseIf, urmează doar comanda ElseIf.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Deci am o grămadă de valori și apoi un tabel de date. Mă întreb dacă pot filtra acel tabel pe baza valorilor în mod similar cu ceea ce este explicat mai sus. De exemplu, aș dori să dau clic pe o celulă care are valoarea 3, care corespunde la 3 înregistrări (200 de rânduri, 25 de coloane) care îndeplinesc o condiție și apoi să-mi filtrez tabelul pentru a afișa doar acele înregistrări. Un exemplu de condiție ar fi, dacă o variabilă este mai mare decât 100. Am peste 100 dintre aceste condiții, motiv pentru care aș dori ca tabelul meu să fie legat de ea într-un fel. Orice ajutor ar fi foarte apreciat. În exemplul oferit de dvs., ar fi similar cu dacă ați dori doar toate vârstele peste 3, 6, 9, 12 etc și apoi ați avea 25 de variabile similare. Așadar, pentru a filtra tabelul pentru a afișa numai înregistrările cu vârsta peste 3, pe baza făcând clic pe un valoare dintr-o listă care spune ceva de genul vârsta>3 - 2 înregistrări, vârsta>6 - 4 înregistrări etc
Acest comentariu a fost redus la minimum de moderatorul de pe site
S-ar putea să fie o greșeală în instrucțiuni. În loc să lipiți codul într-un Modul gol, ar trebui să-l lipiți în fereastra Sheet. De exemplu, dacă macro-ul trebuie să funcționeze pe Sheet1, codul ar trebui să fie lipit în Microsoft Excel Objects -> Sheet1(Sheet1). Abia atunci funcționează pentru mine pe Excel 2016.

Multumesc pentru cod!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, mjr,
Nu există nicio greșeală în acest articol, spunea articolul, ar trebui să introduceți codul VBA în modulul foaie făcând clic dreapta pe numele foii și apoi alegeți Vizualizare cod pentru a merge la modul.
Dar și operațiunea dvs. este corectă.
Multumesc pentru comentariu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna,

Ce se întâmplă dacă am primit datele filtrate într-o filă diferită (foaia 2) în același registru de lucru și celula la care trebuie să se refere filtrul este în prima filă (foaia 1). Am folosit acest VBA, dar nu funcționează așa, doar dacă am ambele celule de criterii (E2 în acest VBA) în aceeași filă cu datele filtrate (A1: C20)
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună băieți,
Explicație perfectă, mulțumesc mult.
1 Mică întrebare: dacă vreau să filtrez cu 2,3 ​​4 sau mai multe criterii, cum fac asta?
De exemplu, vreau să spun că vreau să văd numele Henry, cu clasa 1 și această vârstă... deci nu doar 1 criteriu, ci de exemplu 3..=?


multumesc pentru raspuns


Cu stima,


TIM
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Tim,
Pentru a filtra automat datele pe baza mai multor criterii, ar trebui să aplicați codul de mai jos: (vă rugăm să modificați referințele celulelor în funcție de nevoile dvs.)

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
'Actualizare până la Extendoffice
Dim xVStr As String
Dim xFStr As String
xVStr = „E22:G22” „criteriile pe care doriți să le filtrați
xFStr = „E21:G22” „intervalul conține antetul criteriilor
Dacă nu (Intersect(Range(xVStr), Target) Is Nothing) atunci
Interval("A1:C17").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range(xFStr)
Final, dacă
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
Mulțumesc, pentru asta, a fost foarte util. Am doar o întrebare, după ce am selectat numele în meniul derulant (am nume ca criteriu), arată doar persoanele cu acel nume, așa cum ar trebui, dar cum pot face asta după ce am selectat un nume, apoi am vrei sa vezi toate randurile tabelului meu??

sper ca ma puteti ajuta.

Salutări calde
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna Peter,
Acest cod funcționează bine pentru filtrarea întregului rând de date, ați putea introduce corect intervalul tabelului?

A1:C20 este intervalul de date, E1:E2 este intervalul de criterii.
Interval(„A1:C20”).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range(„E1:E2”)
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă mulțumesc foarte mult pentru asta. Mi-a funcționat bine într-o anumită măsură, vă rog să vă explic:

Am mai multe tabele în registrul meu de lucru. Când am aplicat codul de mai sus, a funcționat doar pentru un tabel, dar nu și pentru celelalte două tabele. Să presupunem că primul tabel este, ca în exemplul dvs., de la A1:C20. Al doilea tabel este de la A22:C40. Al treilea de la A42:C60. Toate tabelele au informații despre „Notă”, totuși au coloane și date diferite și, prin urmare, nu pot fi consolidate într-un singur tabel mare, ci mai degrabă în 3 tabele mai mici.

Cum ar trebui să-i placă codului, astfel încât dacă pun criteriile: „Grade1”, toate cele 3 tabele vor fi filtrate automat pentru „Grade1”?

Vă mulțumesc foarte mult anticipat.

Cel mai bun în ceea ce priveşte
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut,

Vă mulțumesc pentru conținutul grozav, totuși am câteva probleme și mă întrebam dacă aveți idei de ce.

Mi-am ajustat intervalele, astfel încât codul meu să citească:

Filtru automat secundar()
Dacă țintă.Adresă = Interval("E13:F14").Adresă Atunci
Foi de lucru('Arhiva de date').Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("F10:F1048576")
Final, dacă
End Sub


Cu toate acestea, atunci când rulez macrocomandă, apare un mesaj „Eroare de compilare: Eroare Syntex”.

Va multumesc anticipat

Stan
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Stan,
Setați corect intervalul de date și intervalul de criterii în cod? Sau puteți lua intervalul de date ca o captură de ecran aici.
Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, există o modalitate de a modifica rapid codul VBA pentru a filtra pe valori mai mari decât în ​​celula selectată?
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