Funcția Excel FILTER - filtrare dinamică cu formule

  • Imparte Asta
Michael Brown

În această lecție rapidă, veți învăța cum să filtrați în Excel în mod dinamic cu ajutorul formulelor. Exemple de filtrare a duplicatelor, a celulelor care conțin un anumit text, cu criterii multiple și multe altele.

Cum filtrați de obicei în Excel? În cea mai mare parte, folosind Auto Filter, iar în scenarii mai complexe cu Advanced Filter. Fiind rapide și puternice, aceste metode au un dezavantaj semnificativ - nu se actualizează automat atunci când datele se schimbă, ceea ce înseamnă că ar trebui să curățați și să filtrați din nou. Introducerea funcției FILTER în Excel 365 devine o alternativă mult așteptată lacaracteristicile convenționale. Spre deosebire de acestea, formulele Excel se recalculează automat la fiecare modificare a foii de lucru, astfel încât va trebui să configurați filtrul doar o singură dată!

    Funcția Excel FILTER

    Funcția FILTER din Excel este utilizată pentru a filtra un interval de date pe baza criteriilor pe care le specificați.

    Funcția face parte din categoria funcțiilor Dynamic Arrays. Rezultatul este o matrice de valori care se revarsă automat într-un interval de celule, începând cu celula în care introduceți o formulă.

    Sintaxa funcției FILTER este următoarea:

    FILTER(array, include, [if_empty])

    Unde:

    • Array (obligatoriu) - intervalul sau matricea de valori pe care doriți să le filtrați.
    • Includeți (obligatoriu) - criteriile furnizate sub formă de matrice booleană (valori TRUE și FALSE).

      Înălțimea sa (când datele sunt în coloane) sau lățimea (când datele sunt în rânduri) trebuie să fie egală cu cea a array argument.

    • If_empty (opțional) - valoarea care trebuie returnată în cazul în care nicio intrare nu îndeplinește criteriile.

    Funcția FILTRARE este disponibilă numai în Excel pentru Microsoft 365 și Excel 2021. În Excel 2019, Excel 2016 și versiunile anterioare, nu este acceptată.

    Formulă de bază Excel FILTER de bază

    Pentru început, haideți să discutăm câteva cazuri foarte simple pentru a înțelege mai bine cum funcționează o formulă Excel pentru filtrarea datelor.

    Din setul de date de mai jos, presupunând că doriți să extrageți înregistrările cu o anumită valoare în câmpul Grupul , coloană, să zicem grupul C. Pentru a face acest lucru, furnizăm expresia B2:B13="C" către include care va produce o matrice booleană necesară, TRUE corespunzând valorilor "C".

    =FILTER(A2:C13, B2:B13="C", "Fără rezultate")

    În practică, este mai convenabil să introduceți criteriile într-o celulă separată, de exemplu F1, și să utilizați o referință de celulă în loc să codificați valoarea direct în formulă:

    =FILTER(A2:C13, B2:B13=F1, "Fără rezultate")

    Spre deosebire de funcția Filtru din Excel, funcția nu aduce nicio modificare datelor originale. Aceasta extrage înregistrările filtrate în așa-numitul interval de vărsare (E4:G7 în imaginea de mai jos), începând din celula în care este introdusă formula:

    Dacă nicio înregistrare nu corespunde criteriilor specificate, formula returnează valoarea pe care ați introdus-o în câmpul if_empty argument, "No results" în acest exemplu:

    Dacă preferați nu returnează nimic în acest caz, furnizați un șir de caractere gol (""") pentru ultimul argument:

    =FILTER(A2:C13, B2:B13=F1, "")

    În cazul în care datele dvs. sunt organizate pe orizontală de la stânga la dreapta, așa cum se arată în captura de ecran de mai jos, funcția FILTER va funcționa și ea foarte bine. Asigurați-vă doar că definiți intervalele corespunzătoare pentru array și include astfel încât array-ul sursă și array-ul boolean să aibă aceeași lățime:

    =FILTER(B2:M4, B3:M3= B7, "Fără rezultate")

    Funcția Excel FILTER - note de utilizare

    Pentru a filtra eficient în Excel cu ajutorul formulelor, iată câteva puncte importante de care trebuie să țineți cont:

    • Funcția FILTRARE împrăștie automat rezultatele pe verticală sau pe orizontală în foaia de calcul, în funcție de modul în care sunt organizate datele originale. Așadar, asigurați-vă că aveți întotdeauna suficiente celule goale în jos și în dreapta, altfel veți primi o eroare #SPILL.
    • Rezultatele funcției Excel FILTER sunt dinamice, ceea ce înseamnă că se actualizează automat atunci când valorile din setul de date original se modifică. Cu toate acestea, intervalul furnizat pentru funcția array nu este actualizat atunci când se adaugă noi intrări în datele sursă. Dacă doriți ca argumentul array pentru a se redimensiona automat, apoi convertiți-l într-un tabel Excel și construiți formule cu referințe structurate sau creați un interval dinamic numit.

    Cum se filtrează în Excel - exemple de formule

    Acum că știți cum funcționează o formulă de filtrare Excel de bază, este timpul să aflați cum poate fi extinsă pentru a rezolva sarcini mai complexe.

    Filtru cu criterii multiple (logica AND)

    Pentru a filtra datele cu mai multe criterii, furnizați două sau mai multe expresii logice pentru include argument:

    FILTER(array, ( interval1 = criterii1 ) * ( gama2 = criterii2 ), "Fără rezultate"))

    Operația de înmulțire procesează array-urile cu ajutorul funcției Logica ȘI , asigurându-se că numai înregistrările care îndeplinesc toate criteriile Din punct de vedere tehnic, funcționează în felul următor:

    Rezultatul fiecărei expresii logice este un tablou de valori booleene, în care ADEVĂRAT este egal cu 1, iar FALSE cu 0. Apoi, elementele tuturor tablourilor din aceleași poziții sunt înmulțite. Deoarece înmulțirea cu zero dă întotdeauna zero, numai elementele pentru care toate criteriile sunt ADEVĂRATE intră în tabloul rezultat și, în consecință, numai aceste elemente sunt extrase.

    Exemplele de mai jos arată această formulă generică în acțiune.

    Exemplul 1. Filtrarea mai multor coloane în Excel

    Extinzând formula noastră de bază Excel FILTER puțin mai mult, să filtrăm datele pe două coloane: Grupul (coloana B) și Câștiguri (coloana C).

    Pentru aceasta, se stabilesc următoarele criterii: se introduce numele grupului țintă în F2 ( criterii1 ) și numărul minim necesar de victorii în F3 ( criterii2 ).

    Având în vedere că datele noastre sursă sunt în A2:C13 ( array ), grupurile sunt în B2:B13 ( interval1 ), iar victoriile sunt în C2:C13 ( gama2 ), formula ia forma următoare:

    =FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "Fără rezultate")

    Ca rezultat, veți obține o listă cu jucătorii din grupa A care au obținut 2 sau mai multe victorii:

    Exemplul 2. Filtrarea datelor între date

    În primul rând, trebuie remarcat faptul că nu este posibil să creați o formulă generică pentru a filtra după dată în Excel. În situații diferite, va trebui să construiți criteriile în mod diferit, în funcție de faptul dacă doriți să filtrați după o anumită dată, după lună sau după an. Scopul acestui exemplu este de a demonstra abordarea generală.

    La datele din exemplul nostru, adăugăm încă o coloană care conține datele ultimei victorii (coloana D). Și acum, vom extrage victoriile care au avut loc într-o anumită perioadă, de exemplu între 17 și 31 mai.

    Vă rugăm să observați că, în acest caz, ambele criterii se aplică aceluiași interval:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Fără rezultate")

    Unde G2 și G3 sunt datele între care se filtrează.

    Filtru cu criterii multiple (logică OR)

    Pentru a extrage date pe baza unei condiții multiple OR, se utilizează, de asemenea, expresii logice, așa cum se arată în exemplele anterioare, dar, în loc să le înmulțiți, le adunați. Atunci când array-urile booleene returnate de expresii sunt însumate, array-ul rezultat va avea 0 pentru intrările care nu îndeplinesc niciun criteriu (adică toate criteriile sunt FALSE), iar astfel de intrări vor fi filtrate. Intrările pentru care lacel puțin un criteriu este ADEVĂRAT vor fi extrase.

    Iată formula generică de filtrare a coloanelor cu ajutorul logicii OR:

    FILTER(array, ( interval1 = criterii1 ) + ( gama2 = criterii2 ), "Fără rezultate"))

    Ca exemplu, să extragem o listă de jucători care au aceasta sau aceea numărul de victorii.

    Presupunând că datele sursă sunt în A2:C13, câștigurile sunt în C2:C13, iar numerele de câștig de interes sunt în F2 și F3, formula ar fi următoarea:

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Fără rezultate")

    Ca rezultat, știi care jucători au câștigat toate meciurile (4) și care nu au câștigat niciunul (0):

    Filtrați pe baza mai multor criterii AND și OR

    În situația în care trebuie să aplicați ambele tipuri de criterii, rețineți această regulă simplă: uniți criteriile AND cu asterisc (*) și criteriile OR cu semnul plus (+).

    De exemplu, pentru a returna o listă de jucători care au un anumit număr de victorii (F2) ȘI aparțin grupului menționat în E2 SAU E3, construiți următorul lanț de expresii logice:

    =FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "Fără rezultate")

    Și veți obține următorul rezultat:

    Cum să filtrați duplicatele în Excel

    Atunci când lucrați cu foi de calcul uriașe sau combinați date din diferite surse, există adesea posibilitatea ca unele duplicate să se strecoare.

    Dacă doriți să filtrați duplicate și extrageți elementele unice, apoi utilizați funcția UNIQUE, așa cum este explicat în tutorialul de mai sus.

    Dacă obiectivul dumneavoastră este de a filtrează dublurile , adică extrageți intrările care apar de mai multe ori, apoi utilizați funcția FILTER împreună cu COUNTIFS.

    Ideea este de a obține numărul de apariții pentru toate înregistrările și de a le extrage pe cele mai mari decât 1. Pentru a obține numărul de apariții, se furnizează același interval pentru fiecare înregistrare interval_criteriu / criterii pereche de COUNTIFS le place acest lucru:

    FILTRUL( array , COUNTIFS( coloana1 , column1, coloana2 , coloana2 )>1, "Fără rezultate")

    De exemplu, pentru a filtra rândurile duplicate din datele din A2:C20 pe baza valorilor din toate cele 3 coloane, iată formula care trebuie utilizată:

    =FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "Fără rezultate")

    Sfat. Pentru a filtra dublurile pe baza valorilor din coloane cheie , includeți numai acele coloane specifice în funcția COUNTIFS.

    Cum se filtrează spațiile goale în Excel

    O formulă de filtrare a celulelor goale este, de fapt, o variație a formulei Excel FILTER cu mai multe criterii AND. În acest caz, verificăm dacă toate (sau anumite) coloane au date în ele și excludem rândurile în care cel puțin o celulă este goală. Pentru a identifica celulele care nu sunt goale, se utilizează operatorul "not equal to" () împreună cu un șir de caractere gol (""), astfel:

    FILTER(array, ( coloana1 "") * ( coloana2 =""), "Nici un rezultat")

    Cu datele sursă din A2:C12, pentru a filtra rândurile care conțin una sau mai multe celule goale, se introduce următoarea formulă în E3:

    Filtrarea celulelor care conțin un anumit text

    Pentru a extrage celulele care conțin un anumit text, puteți utiliza funcția FILTER împreună cu formula clasică If cell contains:

    FILTER(array, ISNUMBER(SEARCH(" text ", gama ))), "Fără rezultate")

    Iată cum funcționează:

    • Funcția SEARCH caută un șir de text specificat într-un interval dat și returnează fie un număr (poziția primului caracter), fie eroarea #VALUE! (textul nu a fost găsit).
    • Funcția ISNUMBER convertește toate numerele la TRUE și erorile la FALSE și transmite matricea booleană rezultată către funcția include argument al funcției FILTER.

    Pentru acest exemplu, am adăugat elementul Nume de familie de jucători în B2:B13, a tastat partea din nume pe care dorim să o găsim în G2, apoi a folosit următoarea formulă pentru a filtra datele:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Fără rezultate")

    Ca rezultat, formula regăsește cele două nume de familie care conțin "han":

    Filtrare și calcul (Sumă, Medie, Min, Max, etc.)

    Un lucru interesant la funcția Excel FILTER este că nu numai că poate extrage valori cu condiții, ci și rezuma datele filtrate. Pentru aceasta, combinați FILTER cu funcții de agregare precum SUM, AVERAGE, COUNT, MAX sau MIN.

    De exemplu, pentru a agrega datele pentru un anumit grup în F1, utilizați următoarele formule:

    Total victorii:

    =SUMA(FILTER(C2:C13, B2:B13=F1, 0))

    Victorii medii:

    =MEDIA(FILTER(C2:C13, B2:B13=F1, 0))

    Câștiguri maxime:

    =MAX(FILTER(C2:C13, B2:B13=F1, 0))

    Victorii minime:

    =MIN(FILTER(C2:C13, B2:B13=F1, 0))

    Vă rugăm să fiți atenți la faptul că, în toate formulele, folosim zero pentru if_empty astfel încât formulele să returneze 0 dacă nu se găsește nicio valoare care să corespundă criteriilor. Furnizarea unui text de tipul "No results" ar duce la o eroare #VALUE, care este, evident, ultimul lucru pe care îl doriți :)

    Formulă FILTRĂ sensibilă la majuscule și minuscule

    O formulă standard Excel FILTER este insensibilă la majuscule și minuscule, ceea ce înseamnă că nu face nicio distincție între caracterele minuscule și majuscule. Pentru a face distincția între majuscule și minusculele textului, cuibăriți funcția EXACT în include Acest argument va forța FILTER să efectueze testul logic în funcție de majuscule și minuscule:

    FILTER(array, EXACT( gama , criterii ), "Fără rezultate"))

    Să presupunem că aveți ambele grupuri A și a și doriți să extrageți înregistrările în care grupul este litera "a" minusculă. Pentru a face acest lucru, utilizați următoarea formulă, unde A2:C13 sunt datele sursă și B2:B13 sunt grupurile de filtrat:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "Fără rezultate")

    Ca de obicei, puteți introduce grupul țintă într-o celulă predefinită, de exemplu F1, și puteți utiliza referința celulei respective în locul textului codificat:

    =FILTER(A2:C13, EXACT(B2:B13, F1), "Fără rezultate")

    Cum să FILTRAȚI datele și să returnați doar anumite coloane

    În cea mai mare parte, filtrarea tuturor coloanelor cu o singură formulă este ceea ce doresc utilizatorii Excel. Dar dacă tabelul sursă conține zeci sau chiar sute de coloane, este posibil să doriți să limitați rezultatele la câteva dintre cele mai importante.

    Exemplul 1. Filtrarea unor coloane adiacente

    În situația în care doriți ca unele coloane învecinate să apară într-un rezultat FILTER, includeți numai acele coloane în array deoarece acest argument este cel care determină ce coloane se vor returna.

    În exemplul formulei de bază FILTER, presupunând că doriți să returnați primele 2 coloane ( Nume și Grupul ). Astfel, se furnizează A2:B13 pentru array argument:

    =FILTER(A2:B13, B2:B13=F1, "Fără rezultate")

    Ca rezultat, obținem o listă de participanți ai grupului țintă definit în F1:

    Exemplul 2. Filtrarea coloanelor neadiacente

    Pentru a determina funcția FILTER să returneze coloane necontinue, utilizați acest truc inteligent:

    1. Realizați o formulă de FILTRARE cu condiția (condițiile) dorită (dorite) folosind întregul tabel pentru array .
    2. Aninați formula de mai sus în interiorul unei alte funcții FILTER. Pentru a configura funcția "wrapper", utilizați o constantă de matrice de valori TRUE și FALSE sau 1 și 0 pentru funcția include unde TRUE (1) marchează coloanele care trebuie păstrate, iar FALSE (0) marchează coloanele care trebuie excluse.

    De exemplu, pentru a returna numai Nume (prima coloană) și Câștiguri (a treia coloană), folosim {1,0,1} sau {TRUE,FALSE,TRUE} pentru include argument al funcției exterioare FILTER:

    =FILTER(FILTER(FILTER(A2:C13, B2:B13=F1), {1,0,1})

    Sau

    =FILTER(FILTER(FILTER(A2:C13, B2:B13=F1), {TRUE,FALSE,TRUE})

    Cum se limitează numărul de rânduri returnate de funcția FILTER

    În cazul în care formula FILTER găsește o mulțime de rezultate, dar foaia de calcul are un spațiu limitat și nu puteți șterge datele de mai jos, atunci puteți limita numărul de rânduri pe care funcția FILTER le returnează.

    Să vedem cum funcționează pe un exemplu de formulă simplă care extrage jucători din grupul țintă din F1:

    =FILTER(A2:C13, B2:B13=F1)

    Formula de mai sus afișează toate înregistrările pe care le găsește, 4 rânduri în cazul nostru. Dar să presupunem că aveți spațiu doar pentru două. Pentru a afișa doar primele 2 rânduri găsite, trebuie să faceți următoarele:

    • Introduceți formula FILTER în formula array argument al funcției INDEX.
    • Pentru număr_ rând din INDEX, utilizați o constantă de matrice verticală de tipul {1;2}. Aceasta determină câte rânduri trebuie returnate (2 în cazul nostru).
    • Pentru număr_coloană utilizați o constantă de matrice orizontală de tipul {1,2,3}. Aceasta specifică ce coloane trebuie returnate (primele 3 coloane în acest exemplu).
    • Pentru a avea grijă de eventualele erori atunci când nu se găsesc date care să corespundă criteriilor dumneavoastră, puteți include formula dumneavoastră în funcția IFERROR.

    Formula completă are următoarea formă:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "Niciun rezultat")

    Atunci când se lucrează cu tabele mari, scrierea manuală a constantelor de matrice poate fi destul de greoaie. Nu este nicio problemă, funcția SEQUENCE poate genera automat numerele secvențiale pentru dumneavoastră:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), SEQUENCE(2), SEQUENCE(1, COLUMNS(A2:C13))), "Niciun rezultat")

    Prima secvență generează un tablou vertical care conține atâtea numere secvențiale câte numere sunt specificate în primul (și singurul) argument. A doua secvență utilizează funcția COLUMNS pentru a număra numărul de coloane din setul de date și produce un tablou orizontal echivalent.

    Sfat. Pentru a returna datele din coloane specifice , nu toate coloanele, în constanta matricei orizontale pe care o utilizați pentru număr_coloană de la INDEX, includeți numai acele numere specifice. De exemplu, pentru a extrage date din prima și a treia coloană, utilizați {1,3}.

    Funcția Excel FILTER nu funcționează

    În situația în care formula FILTRUL Excel are ca rezultat o eroare, cel mai probabil aceasta va fi una dintre următoarele:

    Eroare #CALC!

    Se întâmplă dacă se aplică opțiunea if_empty este omis și nu se găsește niciun rezultat care să corespundă criteriilor. Motivul este că, în prezent, Excel nu acceptă array-uri goale. Pentru a preveni astfel de erori, asigurați-vă că definiți întotdeauna parametrul if_empty în formulele dumneavoastră.

    Eroare #VALUE

    Se produce atunci când array și include argument au dimensiuni incompatibile.

    #N/A, #VALUE, etc.

    Pot apărea diferite erori dacă o anumită valoare din include reprezintă o eroare sau nu poate fi convertit într-o valoare booleană.

    #NAME eroare

    Apare atunci când încercați să utilizați FILTRUL într-o versiune mai veche de Excel. Vă rugăm să rețineți că este o funcție nouă, care este disponibilă numai în Office 365 și Excel 2021.

    În noul Excel, apare o eroare #NAME dacă, din greșeală, scrieți greșit numele funcției.

    Eroare #SPILL

    Cel mai adesea, această eroare apare dacă una sau mai multe celule din intervalul de vărsare nu sunt complet goale. Pentru a o remedia, trebuie doar să ștergeți sau să ștergeți celulele care nu sunt goale. Pentru a investiga și a rezolva alte cazuri, consultați Eroare #SPILL! în Excel: ce înseamnă și cum se rezolvă.

    #REF! eroare

    Apare atunci când se utilizează o formulă FILTER între diferite registre de lucru, iar registrul de lucru sursă este închis.

    Iată cum să arhivați datele în Excel în mod dinamic. Vă mulțumesc pentru lectură și sper să ne vedem pe blog săptămâna viitoare!

    Descărcați caietul de practică

    Filtrare în Excel cu formule (fișier .xlsx)

    Michael Brown este un pasionat de tehnologie dedicat, cu o pasiune pentru simplificarea proceselor complexe folosind instrumente software. Cu mai mult de un deceniu de experiență în industria tehnologiei, el și-a perfecționat abilitățile în Microsoft Excel și Outlook, precum și în Google Sheets și Docs. Blogul lui Michael este dedicat împărtășirii cunoștințelor și experienței sale cu alții, oferind sfaturi și tutoriale ușor de urmat pentru îmbunătățirea productivității și eficienței. Indiferent dacă sunteți un profesionist experimentat sau un începător, blogul lui Michael oferă informații valoroase și sfaturi practice pentru a profita la maximum de aceste instrumente software esențiale.