Indholdsfortegnelse
I denne hurtige lektion lærer du at filtrere dynamisk i Excel med formler. Eksempler på at filtrere dubletter, celler, der indeholder en bestemt tekst, med flere kriterier og meget mere.
Hvordan filtrerer du normalt i Excel? For det meste ved at bruge Auto Filter og i mere komplekse scenarier med Advanced Filter. Disse metoder er hurtige og kraftfulde, men de har en væsentlig ulempe - de opdateres ikke automatisk, når dine data ændres, hvilket betyder, at du skal rydde op og filtrere igen. Indførelsen af FILTER-funktionen i Excel 365 bliver et længe ventet alternativ tilI modsætning til dem genberegnes Excel-formler automatisk ved hver ændring af regnearket, så du behøver kun at opsætte dit filter én gang!
Excel FILTER-funktion
Funktionen FILTER i Excel bruges til at filtrere en række data ud fra de kriterier, du angiver.
Funktionen hører til kategorien Dynamic Arrays-funktioner. Resultatet er et array af værdier, der automatisk fylder en række celler, startende fra den celle, hvor du indtaster en formel.
Syntaksen for FILTER-funktionen er som følger:
FILTER(array, include, [if_empty])Hvor:
- Array (påkrævet) - det interval eller array af værdier, som du vil filtrere.
- Inkluder (påkrævet) - kriterierne leveres som et boolsk array (værdierne TRUE og FALSE).
Dens højde (når dataene er i kolonner) eller bredde (når dataene er i rækker) skal være lig med højden (når dataene er i kolonner) eller bredden (når dataene er i rækker) af array argument.
- If_empty (valgfri) - den værdi, der skal returneres, når ingen poster opfylder kriterierne.
Funktionen FILTER er kun tilgængelig i Excel til Microsoft 365 og Excel 2021. I Excel 2019, Excel 2016 og tidligere versioner understøttes den ikke.
Grundlæggende Excel FILTER-formel
Lad os først diskutere et par meget enkle tilfælde for at få en bedre forståelse af, hvordan en Excel-formel til at filtrere data fungerer.
Hvis du fra nedenstående datasæt vil udtrække de poster med en bestemt værdi i Gruppe , kolonne, f.eks. gruppe C. For at få det gjort, angiver vi udtrykket B2:B13="C" til omfatter argumentet, som vil producere et boolsk array, hvor TRUE svarer til "C"-værdier.
=FILTER(A2:C13, B2:B13="C", "Ingen resultater")
I praksis er det mere praktisk at indtaste kriterierne i en separat celle, f.eks. F1, og bruge en cellehenvisning i stedet for at indtaste værdien direkte i formlen:
=FILTER(A2:C13, B2:B13=F1, "Ingen resultater")
I modsætning til Excels filterfunktion foretager funktionen ingen ændringer i de oprindelige data. Den udtrækker de filtrerede poster i det såkaldte spildområde (E4:G7 i skærmbilledet nedenfor), der begynder i den celle, hvor formlen er indtastet:
Hvis ingen poster svarer til de angivne kriterier, returnerer formlen den værdi, du har angivet i feltet if_empty argument, "Ingen resultater" i dette eksempel:
Hvis du hellere vil returnerer intet i dette tilfælde, skal du angive en tom streng ("") som sidste argument:
=FILTER(A2:C13, B2:B13=F1, "")
Hvis dine data er organiseret horisontalt fra venstre mod højre som vist i skærmbilledet nedenfor, vil FILTER-funktionen også fungere fint. Sørg blot for at definere passende intervaller for array og omfatter argumenter, således at kildearrayet og det boolske array har samme bredde:
=FILTER(B2:M4, B3:M3= B7, "Ingen resultater")
Excel FILTER-funktion - brugsanvisninger
For at filtrere effektivt i Excel med formler er der et par vigtige punkter, som du skal være opmærksom på:
- FILTER-funktionen spreder automatisk resultaterne vertikalt eller horisontalt i regnearket, afhængigt af hvordan dine oprindelige data er organiseret. Sørg derfor for, at du altid har nok tomme celler nede og til højre, ellers får du en #SPILL-fejl.
- Resultaterne af Excel FILTER-funktionen er dynamiske, hvilket betyder, at de opdateres automatisk, når værdierne i det oprindelige datasæt ændres. Det område, der er angivet for funktionen array argumentet opdateres ikke, når der tilføjes nye poster til kildedataene. Hvis du ønsker, at array for at ændre størrelsen automatisk, og konverter den derefter til en Excel-tabelle og opbyg formler med strukturerede referencer, eller opret et dynamisk navngivet område.
Sådan filtrerer du i Excel - eksempler på formler
Nu hvor du ved, hvordan en grundlæggende Excel-filterformel fungerer, er det tid til at få indsigt i, hvordan den kan udvides til at løse mere komplekse opgaver.
Filter med flere kriterier (AND-logik)
Hvis du vil filtrere data med flere kriterier, skal du angive to eller flere logiske udtryk for omfatter argument:
FILTER(array, ( række1 = kriterier1 ) * ( række2 = kriterier2 ), "Ingen resultater"))Multiplikationsoperationen behandler arrays med den AND-logik , der sikrer, at kun de poster, der opfylder alle kriterier Teknisk set fungerer det på denne måde:
Resultatet af hvert logisk udtryk er et array af boolske værdier, hvor TRUE svarer til 1 og FALSE til 0. Derefter ganges elementerne i alle arrays i de samme positioner. Da multiplikation med nul altid giver nul, er det kun de elementer, for hvilke alle kriterierne er TRUE, der kommer med i det resulterende array, og det er derfor kun disse elementer, der udtrækkes.
Nedenstående eksempler viser denne generiske formel i praksis.
Eksempel 1. Filter flere kolonner i Excel
Lad os udvide vores grundlæggende Excel FILTER-formel lidt yderligere og filtrere dataene efter to kolonner: Gruppe (kolonne B) og Vinder (kolonne C).
Til dette formål opstiller vi følgende kriterier: Indtast navnet på målgruppen i F2 ( kriterier1 ) og det krævede mindste antal sejre i F3 ( kriterier2 ).
I betragtning af at vores kildedata er i A2:C13 ( array ), grupper er i B2:B13 ( række1 ) og sejre er i C2:C13 ( række2 ), har formlen denne form:
=FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "Ingen resultater")
Resultatet er en liste over spillere i gruppe A, som har sikret sig 2 eller flere sejre:
Eksempel 2. Filtrering af data mellem datoer
Først og fremmest skal det bemærkes, at det ikke er muligt at lave en generisk formel til at filtrere efter dato i Excel. I forskellige situationer skal du opbygge kriterierne forskelligt, afhængigt af om du vil filtrere efter en bestemt dato, efter måned eller efter år. Formålet med dette eksempel er at demonstrere den generelle fremgangsmåde.
Til vores eksempeldata tilføjer vi endnu en kolonne med datoerne for den sidste gevinst (kolonne D). Nu uddrager vi de gevinster, der er sket i en bestemt periode, f.eks. mellem 17. maj og 31. maj.
Bemærk, at i dette tilfælde gælder begge kriterier for det samme område:
=FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Ingen resultater")
Hvor G2 og G3 er de datoer, der skal filtreres mellem.
Filter med flere kriterier (OR-logik)
For at udtrække data baseret på flere OR-betingelser bruger du også logiske udtryk som vist i de foregående eksempler, men i stedet for at gange dem, lægger du dem sammen. Når de boolske arrays, der returneres af udtrykkene, summeres, vil det resulterende array have 0 for poster, der ikke opfylder nogen kriterier (dvs. alle kriterierne er FALSK), og sådanne poster vil blive filtreret fra. De poster, for hvilke der vedmindst ét kriterium er SAND, vil blive udtrukket.
Her er den generiske formel til at filtrere kolonner med OR-logikken:
FILTER(array, ( række1 = kriterier1 ) + ( række2 = kriterier2 ), "Ingen resultater"))Lad os som eksempel udtrække en liste over spillere, der har dette eller hint antal sejre.
Hvis vi antager, at kildedataene er i A2:C13, at gevinster er i C2:C13, og at de interessante gevinsttal er i F2 og F3, vil formlen se således ud:
=FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Ingen resultater")
Resultatet er, at du ved, hvilke spillere der har vundet alle kampe (4), og hvilke der ikke har vundet nogen (0):
Filter baseret på flere AND- og OR-kriterier
Hvis du skal anvende begge kriterietyper, skal du huske denne enkle regel: Forbind AND-kriterierne med en stjerne (*) og OR-kriterierne med plustegnet (+).
Hvis du f.eks. vil returnere en liste over spillere, der har et givet antal sejre (F2) OG tilhører den gruppe, der er nævnt i enten E2 ELLER E3, skal du opbygge følgende kæde af logiske udtryk:
=FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "Ingen resultater")
Og du får følgende resultat:
Sådan filtreres dubletter i Excel
Når du arbejder med store regneark eller kombinerer data fra forskellige kilder, er der ofte en mulighed for, at der sniger sig nogle dubletter ind.
Hvis du ønsker at filtrere ud dubletter og udtrække unikke elementer, og brug derefter UNIQUE-funktionen som forklaret i den ovenfor linkede vejledning.
Hvis dit mål er at filtrere dubletter , dvs. udtrække poster, der forekommer mere end én gang, og derefter bruge funktionen FILTER sammen med COUNTIFS.
Idéen er at få tællingerne af forekomster for alle posterne og udtrække dem, der er større end 1. For at få tællingerne skal du angive det samme område for hver criteria_range / kriterier par COUNTIFS kan lide dette:
FILTER( array , COUNTIFS( kolonne1 , kolonne1, kolonne2 , kolonne2 )>1, "Ingen resultater")Hvis du f.eks. vil filtrere dobbelte rækker fra dataene i A2:C20 baseret på værdierne i alle 3 kolonner, skal du bruge følgende formel:
=FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "Ingen resultater")
Tip. Hvis du vil filtrere dubletter baseret på værdierne i vigtige kolonner , kun medtage disse specifikke kolonner i funktionen COUNTIFS.
Sådan filtrerer du tomme felter i Excel
En formel til filtrering af tomme celler er i virkeligheden en variant af Excel-formlen FILTER med flere AND-kriterier. I dette tilfælde kontrollerer vi, om alle (eller bestemte) kolonner indeholder data, og udelukker de rækker, hvor mindst én celle er tom. For at identificere celler, der ikke er tomme, bruger du operatoren "not equal to" () sammen med en tom streng (""") på følgende måde:
FILTER(array, ( kolonne1 "") * ( kolonne2 =""), "Ingen resultater")Med kildedataene i A2:C12 indtastes følgende formel i E3 for at filtrere rækker, der indeholder en eller flere tomme celler, fra:
Filtrere celler, der indeholder specifik tekst
Hvis du vil udtrække celler, der indeholder en bestemt tekst, kan du bruge funktionen FILTER sammen med den klassiske formel Hvis celle indeholder:
FILTER(array, ISNUMBER(SEARCH(" tekst ", rækkevidde ))), "Ingen resultater")Sådan fungerer det:
- SEARCH-funktionen søger efter en specificeret tekststreng i et givet område og returnerer enten et tal (positionen for det første tegn) eller en #VALUE! fejl (teksten er ikke fundet).
- Funktionen ISNUMBER konverterer alle tal til TRUE og fejl til FALSE og sender det resulterende boolske array til funktionen omfatter argumentet i FILTER-funktionen.
I dette eksempel har vi tilføjet Efternavne af spillere i B2:B13, indtastede den del af navnet, vi vil finde i G2, og brugte derefter følgende formel til at filtrere dataene:
=FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Ingen resultater")
Resultatet er, at formlen finder de to efternavne, der indeholder "han":
Filtrere og beregne (sum, gennemsnit, min., max. osv.)
Det smarte ved Excel-funktionen FILTER er, at den ikke kun kan udtrække værdier med betingelser, men også opsummere de filtrerede data. Du kan kombinere FILTER med aggregeringsfunktioner som SUM, AVERAGE, COUNT, MAX eller MIN for at opnå dette.
Hvis du f.eks. vil aggregere data for en bestemt gruppe i F1, skal du bruge følgende formler:
Samlet antal sejre:
=SUM(FILTER(C2:C13, B2:B13=F1, 0))
Gennemsnitlige sejre:
=GENNEMSNIT(FILTER(C2:C13, B2:B13=F1, 0))
Maksimale gevinster:
=MAX(FILTER(C2:C13, B2:B13=F1, 0))
Mindste antal sejre:
=MIN(FILTER(C2:C13, B2:B13=F1, 0))
Vær opmærksom på, at vi i alle formler bruger nul for if_empty argumentet, så formlerne vil returnere 0, hvis der ikke findes nogen værdier, der opfylder kriterierne. Hvis du angiver en tekst som "Ingen resultater", vil det resultere i en #VALUE-fejl, hvilket naturligvis er det sidste, du ønsker :)
Case-sensitiv FILTER-formel
En standard Excel FILTER-formel er ikke skelnes mellem store og små bogstaver, hvilket betyder, at den ikke skelner mellem små og store bogstaver. Hvis du vil skelne mellem tekstens bogstaver, skal du bruge EXACT-funktionen i omfatter Dette vil tvinge FILTER til at foretage logiske test på en måde, der tager hensyn til store og små bogstaver:
FILTER(array, EXACT( rækkevidde , kriterier ), "Ingen resultater"))Hvis man antager, at du har begge grupper A og a og ønsker at udtrække poster, hvor gruppen er "a" med små bogstaver. For at få det gjort, skal du bruge følgende formel, hvor A2:C13 er kildedataene og B2:B13 er grupper, der skal filtreres:
=FILTER(A2:C13, EXACT(B2:B13, "a"), "Ingen resultater")
Som sædvanlig kan du indtaste målgruppen i en foruddefineret celle, f.eks. F1, og bruge denne cellehenvisning i stedet for hårdkodet tekst:
=FILTER(A2:C13, EXACT(B2:B13, F1), "Ingen resultater")
Sådan FILTRER du data og returnerer kun bestemte kolonner
For det meste er filtrering af alle kolonner med en enkelt formel det, Excel-brugere ønsker. Men hvis din kildetabel indeholder ti eller endda hundredvis af kolonner, kan du helt sikkert ønske at begrænse resultaterne til nogle få vigtige kolonner.
Eksempel 1. Filter nogle tilstødende kolonner
Hvis du ønsker, at nogle nabokolonner skal vises i et FILTER-resultat, skal du kun inkludere disse kolonner i array fordi det er dette argument, der bestemmer, hvilke kolonner der skal returneres.
Hvis du i det grundlæggende eksempel med FILTER-formlen antager, at du ønsker at returnere de to første kolonner ( Navn og Gruppe ). Så du angiver A2:B13 til den array argument:
=FILTER(A2:B13, B2:B13=F1, "Ingen resultater")
Som resultat får vi en liste over deltagere i den målgruppe, der er defineret i F1:
Eksempel 2. Filtrer ikke-tilstødende kolonner
Hvis du vil have FILTER-funktionen til at returnere ikke-sammenhængende kolonner, skal du bruge dette smarte trick:
- Lav en FILTER-formel med de(n) ønskede betingelse(r) ved hjælp af hele tabellen for array .
- Indsæt ovenstående formel i en anden FILTER-funktion. For at konfigurere "wrapper"-funktionen skal du bruge en array-konstant med værdierne TRUE og FALSE eller 1'er og 0'er for omfatter argumentet, hvor TRUE (1) markerer de kolonner, der skal bevares, og FALSE (0) markerer de kolonner, der skal udelukkes.
Hvis du f.eks. kun vil returnere Navne (1. kolonne) og Vinder (3. kolonne), bruger vi {1,0,1} eller {TRUE,FALSE,TRUE} til at angive omfatter argumentet i den ydre FILTER-funktion:
=FILTER(FILTER(A2:C13, B2:B13=F1), {1,0,1})
Eller
=FILTER(FILTER(A2:C13, B2:B13=F1), {TRUE,FALSE,TRUE})
Sådan begrænser du antallet af rækker, der returneres af FILTER-funktionen
Hvis din FILTER-formel finder en hel del resultater, men dit regneark har begrænset plads, og du ikke kan slette dataene nedenfor, kan du begrænse antallet af rækker, som FILTER-funktionen returnerer.
Lad os se, hvordan det fungerer med et eksempel på en simpel formel, der trækker spillere fra målgruppen i F1:
=FILTER(A2:C13, B2:B13=F1)
Ovenstående formel udsender alle de poster, som den finder, 4 rækker i vores tilfælde. Men hvis du kun har plads til to, skal du gøre følgende for kun at udstede de to første fundne rækker:
- Indsæt FILTER-formlen i array argumentet i INDEX-funktionen.
- For den row_num argumentet i INDEX skal du bruge en lodret arraykonstant som {1;2}. Den bestemmer, hvor mange rækker der skal returneres (2 i vores tilfælde).
- For den kolonne_nummer argumentet skal du bruge en vandret arraykonstant som {1,2,3}, der angiver, hvilke kolonner der skal returneres (de tre første kolonner i dette eksempel).
- For at tage sig af eventuelle fejl, når der ikke findes data, der svarer til dine kriterier, kan du indpakke din formel i IFERROR-funktionen.
Den fuldstændige formel har denne form:
=IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "Intet resultat")
Når du arbejder med store tabeller, kan det være ret besværligt at skrive arraykonstanter manuelt. Det er ikke noget problem, SEQUENCE-funktionen kan generere de sekventielle numre automatisk for dig:
=IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), SEQUENCE(2), SEQUENCE(1, COLUMNS(A2:C13))), "Intet resultat")
Den første SEQUENCE genererer et vertikalt array med lige så mange sekventielle numre som angivet i det første (og eneste) argument. Den anden SEQUENCE bruger funktionen COLUMNS til at tælle antallet af kolonner i datasættet og producerer et tilsvarende horisontalt array.
Tip. For at returnere data fra specifikke kolonner , ikke alle kolonnerne, i den horisontale arraykonstant, som du bruger til den kolonne_nummer argumentet i INDEX, kun de specifikke tal. Hvis du f.eks. vil udtrække data fra den første og tredje kolonne, skal du bruge {1,3}.
Excel FILTER-funktionen virker ikke
I situationer, hvor din Excel FILTER-formel resulterer i en fejl, vil det højst sandsynligt være en af følgende:
#CALC! fejl
Opstår, hvis den valgfrie if_empty argumentet udelades, og der findes ingen resultater, der opfylder kriterierne. Årsagen er, at Excel i øjeblikket ikke understøtter tomme arrays. For at undgå sådanne fejl skal du altid sørge for at definere if_empty værdi i dine formler.
#VALUE fejl
Opstår, når den array og omfatter argument har uforenelige dimensioner.
#N/A, #VALUE, osv.
Forskellige fejl kan opstå, hvis en værdi i omfatter argumentet er en fejl eller ikke kan konverteres til en boolsk værdi.
#NAME fejl
Opstår, når du forsøger at bruge FILTER i en ældre version af Excel. Husk, at det er en ny funktion, som kun er tilgængelig i Office 365 og Excel 2021.
I det nye Excel opstår der en #NAME-fejl, hvis du ved et uheld staver funktionens navn forkert.
#SPILL fejl
Oftest opstår denne fejl, hvis en eller flere celler i spildområdet ikke er helt tomme. For at rette fejlen skal du blot rydde eller slette ikke-tomme celler. For at undersøge og løse andre tilfælde kan du se #SPILL! fejl i Excel: hvad den betyder, og hvordan du retter den.
#REF! fejl
Opstår, når en FILTER-formel bruges mellem forskellige arbejdsbøger, og kildearbejdsbogen er lukket.
Det er sådan man filer data dynamisk i Excel. Jeg takker for din læsning og håber at se dig på vores blog i næste uge!
Download arbejdsbog til øvelser
Filter i Excel med formler (.xlsx-fil)