Innholdsfortegnelse
I denne raske leksjonen lærer du hvordan du filtrerer i Excel dynamisk med formler. Eksempler for å filtrere duplikater, celler som inneholder bestemt tekst, med flere kriterier og mer.
Hvordan filtrerer du vanligvis i Excel? For det meste ved å bruke Auto Filter, og i mer komplekse scenarier med Advanced Filter. Disse metodene er raske og kraftige og har en betydelig ulempe - de oppdateres ikke automatisk når dataene dine endres, noe som betyr at du må rydde opp og filtrere på nytt. Introduksjonen av FILTER-funksjonen i Excel 365 blir et etterlengtet alternativ til de konvensjonelle funksjonene. I motsetning til dem, beregnes Excel-formler automatisk på nytt ved hver endring av regnearket, så du må sette opp filteret bare én gang!
Excel FILTER-funksjonen
FILTER-funksjonen i Excel brukes til å filtrere en rekke data basert på kriteriene du angir.
Funksjonen tilhører kategorien Dynamic Arrays-funksjoner. Resultatet er en matrise med verdier som automatisk søles inn i et celleområde, fra cellen der du skriver inn en formel.
Syntaksen til FILTER-funksjonen er som følger:
FILTER(matrise, inkluderer , [if_empty])Hvor:
- Array (obligatorisk) – området eller matrisen med verdier du vil filtrere.
- Inkluder (obligatorisk) - kriteriene oppgitt som en boolsk matrise (TRUE og FALSE-verdier).
Detsselv hundrevis av kolonner, kan det være lurt å begrense resultatene til noen av de viktigste.
Eksempel 1. Filtrer noen tilstøtende kolonner
I situasjoner hvor du vil at noen nabokolonner skal vises i et FILTER-resultat, inkluderer bare de kolonnene i matrise fordi det er dette argumentet som bestemmer hvilke kolonner som skal returneres.
I det grunnleggende FILTER-formeleksemplet, forutsatt at du ønsker å returnere de to første kolonnene ( Navn og Gruppe ). Så du oppgir A2:B13 for array -argumentet:
=FILTER(A2:B13, B2:B13=F1, "No results")
Som et resultat får vi en liste over deltakere i målgruppen definert i F1:
Eksempel 2. Filtrer ikke-tilstøtende kolonner
For å få FILTER-funksjonen til å returnere ikke-sammenhengende kolonner, bruk dette smarte trikset:
- Lag en FILTER-formel med ønsket(e) betingelse(r) ved å bruke hele tabellen for matrise .
- Leste formelen ovenfor inne i en annen FILTER-funksjon. For å konfigurere "wrapper"-funksjonen, bruk en matrisekonstant med TRUE og FALSE-verdier eller 1-er og 0-er for inkluder -argumentet, der TRUE (1) markerer kolonnene som skal beholdes og FALSE (0) markerer kolonner som skal ekskluderes.
For for eksempel å returnere bare Navn (1. kolonne) og Wins (3. kolonne), bruker vi {1, 0,1} eller {TRUE,FALSE,TRUE} for inkluder -argumentet til den ytre FILTER-funksjonen:
=FILTER(FILTER(A2:C13, B2:B13=F1), {1,0,1})
Eller
=FILTER(FILTER(A2:C13, B2:B13=F1), {TRUE,FALSE,TRUE})
Hvordan begrenseantall rader returnert av FILTER-funksjonen
Hvis FILTER-formelen din finner ganske mange resultater, men regnearket ditt har begrenset plass og du ikke kan slette dataene nedenfor, kan du begrense antall rader FILTER-funksjonen returnerer .
La oss se hvordan det fungerer på et eksempel på en enkel formel som trekker spillere fra målgruppen i F1:
=FILTER(A2:C13, B2:B13=F1)
Formelen ovenfor gir ut alle postene som den finner, 4 rader i vårt tilfelle. Men anta at du bare har plass til to. For å skrive ut bare de to første funnet radene, er dette hva du må gjøre:
- Koble FILTER-formelen inn i array -argumentet til INDEX-funksjonen.
- For row_num -argumentet til INDEX, bruk en vertikal matrisekonstant som {1;2}. Den avgjør hvor mange rader som skal returneres (2 i vårt tilfelle).
- For argumentet kolonne_nummer bruker du en horisontal matrisekonstant som {1,2,3}. Den spesifiserer hvilke kolonner som skal returneres (de første 3 kolonnene i dette eksemplet).
- For å ta vare på mulige feil når ingen data som samsvarer med kriteriene blir funnet, kan du pakke formelen inn i HVISER-funksjonen.
Den komplette formelen har denne formen:
=IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "No result")
Når du arbeider med store tabeller, kan det å skrive matrisekonstanter manuelt være ganske tungvint. Ikke noe problem, SEQUENCE-funksjonen kan generere sekvensnumrene for deg automatisk:
=IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), SEQUENCE(2), SEQUENCE(1, COLUMNS(A2:C13))), "No result")
Den første SEQUENCE genererer en vertikal matrisesom inneholder så mange sekvensielle tall som spesifisert i det første (og eneste) argumentet. Den andre SEKVENS bruker funksjonen COLUMNS for å telle antall kolonner i datasettet og produserer en ekvivalent horisontal matrise.
Tips. For å returnere data fra spesifikke kolonner , inkluderer ikke alle kolonnene i den horisontale matrisekonstanten som du bruker for argumentet kolonne_nummer til INDEX, bare de spesifikke tallene. For å trekke ut data fra den første og tredje kolonnen, bruk for eksempel {1,3}.
Excel FILTER-funksjonen fungerer ikke
I situasjoner hvor Excel FILTER-formelen resulterer i en feil, vil det mest sannsynlig være en av følgende:
#CALC! feil
Oppstår hvis det valgfrie if_empty -argumentet utelates, og ingen resultater som oppfyller kriteriene blir funnet. Årsaken er at Excel for øyeblikket ikke støtter tomme arrays. For å forhindre slike feil, sørg for å alltid definere if_empty -verdien i formlene.
#VALUE-feil
Oppstår når matrisen og include -argumentet har inkompatible dimensjoner.
#N/A, #VALUE, etc.
Forskjellige feil kan oppstå hvis en verdi i include -argumentet er en feil eller kan ikke konverteres til en boolsk verdi.
#NAME-feil
Oppstår når du prøver å bruke FILTER i en eldre versjon av Excel. Husk at det er en ny funksjon, som kun er tilgjengelig i Office 365 og Excel 2021.
Iny Excel, oppstår en #NAME-feil hvis du ved et uhell staver funksjonens navn feil.
#SPILL-feil
Oftest oppstår denne feilen hvis én eller flere celler i utslippsområdet ikke er helt tomme . For å fikse det, fjern eller slett ikke-tomme celler. For å undersøke og løse andre saker, se #SPILL! feil i Excel: hva det betyr og hvordan du fikser det.
#REF! feil
Oppstår når en FILTER-formel brukes mellom ulike arbeidsbøker, og kildearbeidsboken er lukket.
Det er hvordan man filer data i Excel dynamisk. Jeg takker for at du leser og håper å se deg på bloggen vår neste uke!
Last ned øvelsesarbeidsbok
Filter i Excel med formler (.xlsx-fil)
høyde (når data er i kolonner) eller bredde (når data er i rader) må være lik den for array -argumentet.FILTER-funksjonen er kun tilgjengelig i Excel for Microsoft 365 og Excel 2021. I Excel 2019, Excel 2016 og tidligere versjoner støttes det ikke.
Grunnleggende Excel-FILTER-formel
For det første, la oss diskutere et par veldig enkle tilfeller bare for å vinne mer forståelse for hvordan en Excel-formel for å filtrere data fungerer.
Fra datasettet nedenfor, forutsatt at du vil trekke ut postene med en bestemt verdi i kolonnen Gruppe , si gruppe C. For å få det gjort, leverer vi uttrykket B2:B13="C" til inkluder -argumentet, som vil produsere en nødvendig boolsk matrise, med TRUE som tilsvarer "C"-verdier.
=FILTER(A2:C13, B2:B13="C", "No results")
I praksis er det mer praktisk å legge inn kriteriene i en egen celle, f.eks. F1, og bruk en cellereferanse i stedet for å hardkode verdien direkte i formelen:
=FILTER(A2:C13, B2:B13=F1, "No results")
I motsetning til Excels Filter-funksjon, gjør ikke funksjonen noen endringer i de originale dataene. Den trekker ut de filtrerte postene inn i det såkalte spillområdet (E4:G7 i skjermbildet nedenfor), og begynner i cellen der formelen er angitt:
Hvis ingen poster samsvarer med de angitte kriteriene, returnerer formelen verdien du legger inn i if_empty -argumentet, "Ingen resultater" i dette eksempelet:
Hvis du heller ikke vil returnere noe i dette tilfellet, oppgi en tom streng ("") for det siste argumentet:
=FILTER(A2:C13, B2:B13=F1, "")
Hvis dataene dine er organisert horisontalt fra venstre til høyre som vist i skjermbildet nedenfor, FILTER-funksjonen vil også fungere bra. Bare sørg for at du definerer passende områder for argumentene array og include , slik at kildematrisen og boolsk matrise har samme bredde:
=FILTER(B2:M4, B3:M3= B7, "No results")
Excel FILTER-funksjon - bruksnotater
For effektivt å filtrere i Excel med formler, her er et par viktige punkter å være oppmerksom på:
- FILTER-funksjonen overfører automatisk resultatene vertikalt eller horisontalt i regnearket, avhengig av hvordan originaldataene dine er organisert. Så sørg for at du alltid har nok tomme celler nede og til høyre, ellers får du en #SPILL-feil.
- Resultatene av Excel FILTER-funksjonen er dynamiske, noe som betyr at de oppdateres automatisk når verdier i det opprinnelige datasettet endres. Området som er oppgitt for matrise -argumentet oppdateres imidlertid ikke når nye oppføringer legges til kildedataene. Hvis du vil at matrisen skal endre størrelse automatisk, konverter den til en Excel-tabell og bygg formler med strukturerte referanser, eller opprett et dynamisk navngitt område.
Hvordan filtrere i Excel -formeleksempler
Nå som du vet hvordan en grunnleggende Excel-filterformel fungerer, er det på tide å få litt innsikt i hvordan den kan utvides for å løse mer komplekse oppgaver.
Filtrer med flere kriterier (OG logikk)
For å filtrere data med flere kriterier, oppgir du to eller flere logiske uttrykk for argumentet inkluder :
FILTER(matrise, ( område1= kriterie1) * ( område2= kriterie2), "Ingen resultater")Multiplikasjonsoperasjonen behandler arrayene med AND-logikken , og sikrer at bare postene som oppfyller alle kriteriene returneres. Teknisk sett fungerer det slik:
Resultatet av hvert logiske uttrykk er en rekke boolske verdier, der TRUE tilsvarer 1 og FALSE til 0. Deretter multipliseres elementene i alle matrisene i de samme posisjonene . Siden multiplisering med null alltid gir null, kommer bare elementene som alle kriteriene er SANN for, inn i den resulterende matrisen, og følgelig trekkes bare disse elementene ut.
Eksemplene nedenfor viser denne generiske formelen i aksjon.
Eksempel 1. Filtrer flere kolonner i Excel
Vi utvider vår grunnleggende Excel FILTER-formel litt lenger, la oss filtrere dataene etter to kolonner: Gruppe (kolonne B) og Vinner (kolonne C).
For dette setter vi opp følgende kriterier: skriv inn navnet på målgruppen i F2 ( kriterier1 ) og minimum påkrevd antallvinner i F3 ( kriterier2 ).
Gi at kildedataene våre er i A2:C13 ( matrise ), er gruppene i B2:B13 ( område1 ) og gevinster er i C2:C13 ( område2 ), har formelen denne formen:
=FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "No results")
Som et resultat får du en liste over spillere i gruppe A som har sikret seg 2 eller flere seire:
Eksempel 2. Filtrer data mellom datoer
For det første bør det bemerkes at det ikke er mulig å lage en generisk formel for å filtrere etter dato i Excel. I forskjellige situasjoner må du bygge kriterier forskjellig, avhengig av om du vil filtrere etter en bestemt dato, etter måned eller etter år. Hensikten med dette eksemplet er å demonstrere den generelle tilnærmingen.
Til prøvedataene våre legger vi til en kolonne til som inneholder datoene for siste seier (kolonne D). Og nå vil vi trekke ut gevinstene som fant sted i en bestemt periode, for eksempel mellom 17. mai og 31. mai.
Vær oppmerksom på at i dette tilfellet gjelder begge kriteriene for samme område:
=FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "No results")
Hvor G2 og G3 er datoene det skal filtreres mellom.
Filtrer med flere kriterier (ELLER logikk)
For å trekke ut data basert på flere ELLER-betingelser bruker du også logiske uttrykk som vist i de foregående eksemplene, men i stedet for å multiplisere legger du dem sammen. Når de boolske matrisene som returneres av uttrykkene summeres, vil den resulterende matrisen ha 0 for oppføringer som ikke oppfyller noen kriterier (dvs. allekriteriene er FALSE), og slike oppføringer vil bli filtrert ut. Oppføringene der minst ett kriterium er TRUE vil bli trukket ut.
Her er den generiske formelen for å filtrere kolonner med ELLER-logikken:
FILTER(matrise, ( område1= criteria1) + ( range2= criteria2), "Ingen resultater")La oss som et eksempel trekke ut en liste over spillere som har dette eller det antallet gevinster.
Forutsatt at kildedataene er i A2:C13, gevinstene er i C2:C13, og gevinsttallene av interesse er i F2 og F3, vil formelen gå som følger:
=FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "No results")
Som resultat vet du hvilke spillere som har vunnet alle kampene (4) og hvilke som ikke har vunnet noen (0):
Filtrer basert på flere AND så vel som ELLER-kriterier
I situasjoner hvor du trenger å bruke begge kriterietypene, husk denne enkle regelen: slå sammen AND-kriteriene med stjerne (*) og ELLER-kriteriene med pluss tegn (+).
For eksempel, for å returnere en liste over spillere som har et gitt antall seire (F2) OG tilhører gruppen nevnt i enten E2 ELLER E3, bygg følgende kjede av logiske uttrykk:
=FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "No results")
Og du vil få følgende resultat:
Hvordan filtrere duplikater i Excel
Når du arbeider med store regneark eller kombinerer data fra forskjellige kilder, er det ofte en mulighet for at noen duplikater kan snike seg inn.
Hvis du er ute etter å filtrere ut duplikater og ekstraktunike elementer, bruk deretter UNIQUE-funksjonen som forklart i veiledningen ovenfor.
Hvis målet ditt er å filtrere duplikater , dvs. trekke ut oppføringer som forekommer mer enn én gang, bruk FILTER-funksjonen sammen med COUNTIFS.
Ideen er å få forekomsttellingene for alle postene og trekke ut de som er større enn 1. For å få tellingene, oppgir du det samme området for hvert criteria_range / kriterier -par med COUNTIFS slik:
FILTER( array, COUNTIFS( column1, column1, column2, kolonne2)>1, "Ingen resultater")For for eksempel å filtrere dupliserte rader fra dataene i A2:C20 basert på verdiene i alle 3 kolonnene, her er formelen som skal brukes:
=FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "No results")
Tips. For å filtrere duplikater basert på verdiene i nøkkelkolonner , inkluderer du bare de spesifikke kolonnene i COUNTIFS-funksjonen.
Hvordan filtrere ut tomme felter i Excel
En formel for å filtrere ut tomme celler er faktisk en variant av Excel FILTER-formelen med flere OG-kriterier. I dette tilfellet sjekker vi om alle (eller bestemte) kolonner har noen data i dem og ekskluderer radene der minst én celle er tom. For å identifisere ikke-tomme celler bruker du "ikke lik"-operatoren () sammen med en tom streng ("") som denne:
FILTER(matrise, ( kolonne1 "") * ( kolonne2 =""), "Ingen resultater")Med kildedataene i A2:C12, for å filtrere ut radersom inneholder én eller flere tomme celler, legges følgende formel inn i E3:
Filtrer celler som inneholder spesifikk tekst
For å trekke ut celler som inneholder bestemt tekst, må du kan bruke FILTER-funksjonen sammen med den klassiske If-cellen inneholder formel:
FILTER(matrise, ISNUMBER(SØK(" tekst ", område )), "Ingen resultater")Slik fungerer det:
- SØK-funksjonen ser etter en spesifisert tekststreng i et gitt område og returnerer enten et tall (posisjonen til det første tegnet) eller #VERDI! feil (tekst ikke funnet).
- ISNUMBER-funksjonen konverterer alle tallene til TRUE og feil til FALSE og sender den resulterende boolske matrisen til inkluder -argumentet til FILTER-funksjonen.
For dette eksemplet har vi lagt til etternavnene til spillere i B2:B13, skrevet inn delen av navnet vi ønsker å finne i G2, og deretter bruke følgende formel for å filtrer dataene:
=FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "No results")
Som resultat henter formelen de to etternavnene som inneholder "han":
Filtrer og beregn (Sum, Average, Min, Max, etc.)
En kul ting med Excel FILTER-funksjonen er at den ikke bare kan trekke ut verdier med betingelser, men også oppsummere de filtrerte dataene. For dette, kombiner FILTER med aggregeringsfunksjoner som SUM, AVERAGE, COUNT, MAX eller MIN.
For å samle data for en bestemt gruppe i F1, bruk for eksempel følgendeformler:
Totale gevinster:
=SUM(FILTER(C2:C13, B2:B13=F1, 0))
Gjennomsnittlig seire:
=AVERAGE(FILTER(C2:C13, B2:B13=F1, 0))
Maksimal gevinst:
=MAX(FILTER(C2:C13, B2:B13=F1, 0))
Minstegevinster:
=MIN(FILTER(C2:C13, B2:B13=F1, 0))
Vær oppmerksom på at i alle formlene bruker vi null for if_empty -argumentet, slik at formlene ville returner 0 hvis ingen verdier som oppfyller kriteriene blir funnet. Hvis du oppgir hvilken som helst tekst som "Ingen resultater" vil det resultere i en #VALUE-feil, som åpenbart er det siste du vil ha :)
Stillingsensitiv FILTER-formel
En standard Excel FILTER-formel skiller ikke mellom store og små bokstaver, noe som betyr at den ikke skiller mellom små og store bokstaver. For å skille mellom store og små bokstaver, nester du EXACT-funksjonen i inkluder -argumentet. Dette vil tvinge FILTER til å utføre logisk test på en måte som skiller mellom store og små bokstaver:
FILTER(matrise, EXACT( område , kriterier ), "Ingen resultater")Antatt , du har begge gruppene A og a og ønsker å trekke ut poster der gruppen er liten "a". For å få det gjort, bruk følgende formel, der A2:C13 er kildedata og B2:B13 er grupper som skal filtreres:
=FILTER(A2:C13, EXACT(B2:B13, "a"), "No results")
Som vanlig kan du legge inn målgruppen i en forhåndsdefinert celle, si F1, og bruk den cellereferansen i stedet for hardkodet tekst:
=FILTER(A2:C13, EXACT(B2:B13, F1), "No results")
Hvordan FILTRERE data og returnere kun spesifikke kolonner
For det meste er det Excel-brukere ønsker å filtrere alle kolonner med en enkelt formel. Men hvis kildetabellen inneholder tiere eller