Excel FILTER-funktionen - dynamisk filtrering med formler

  • Dela Detta
Michael Brown

I den här snabblektionen lär du dig hur du kan filtrera dynamiskt i Excel med hjälp av formler. Exempel på hur du filtrerar dubbletter, celler som innehåller viss text, med flera kriterier och mycket mer.

Hur filtrerar du vanligtvis i Excel? För det mesta genom att använda Automatiskt filter och i mer komplexa scenarier med Avancerat filter. Dessa metoder är snabba och kraftfulla, men de har en stor nackdel - de uppdateras inte automatiskt när data ändras, vilket innebär att du måste rensa upp och filtrera igen. Införandet av FILTER-funktionen i Excel 365 blir ett efterlängtat alternativ tillTill skillnad från dem räknas Excel-formlerna om automatiskt vid varje ändring av arbetsbladet, så du behöver bara ställa in ditt filter en gång!

    Excel FILTER-funktionen

    FILTER-funktionen i Excel används för att filtrera ett dataområde baserat på de kriterier som du anger.

    Funktionen tillhör kategorin Dynamic Arrays-funktioner. Resultatet är en array av värden som automatiskt sprids till ett antal celler, med början i den cell där du anger en formel.

    Syntaxen för FILTER-funktionen är följande:

    FILTER(array, include, [if_empty])

    Var:

    • Array (obligatoriskt) - det intervall eller den array av värden som du vill filtrera.
    • Inkludera (obligatoriskt) - kriterierna levereras som en boolesk array (värden TRUE och FALSE).

      Dess höjd (när data är i kolumner) eller bredd (när data är i rader) måste vara lika stor som den för matris argument.

    • If_empty (valfritt) - det värde som ska returneras när inga poster uppfyller kriterierna.

    FILTER-funktionen är endast tillgänglig i Excel för Microsoft 365 och Excel 2021. I Excel 2019, Excel 2016 och tidigare versioner stöds den inte.

    Grundläggande formel för Excel FILTER

    Till att börja med ska vi diskutera några mycket enkla fall för att få en bättre förståelse för hur en Excel-formel för att filtrera data fungerar.

    Anta att du vill extrahera posterna med ett visst värde i fältet Grupp , kolumn, låt oss säga grupp C. För att få det gjort, anger vi uttrycket B2:B13="C" i . argumentet, vilket kommer att ge en nödvändig boolsk matris, med TRUE som motsvarar "C"-värden.

    =FILTER(A2:C13, B2:B13="C", "Inga resultat")

    I praktiken är det bekvämare att ange kriterierna i en separat cell, t.ex. F1, och använda en cellreferens i stället för att hårdkoda värdet direkt i formeln:

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

    Till skillnad från Excels filterfunktion gör funktionen inga ändringar i originaldata, utan extraherar de filtrerade posterna till det så kallade spillområdet (E4:G7 i skärmbilden nedan), med början i den cell där formeln skrivs in:

    Om inga poster matchar de angivna kriterierna returnerar formeln det värde som du anger i fältet if_empty argumentet, "Inga resultat" i det här exemplet:

    Om du hellre vill återge ingenting. i detta fall, ange en tom sträng ("") som sista argument:

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

    Om dina uppgifter är organiserade horisontellt från vänster till höger som visas i skärmbilden nedan, fungerar FILTER-funktionen också bra. Se bara till att du definierar lämpliga intervall för matris och . argumenten, så att källmatrisen och den booleska matrisen har samma bredd:

    =FILTER(B2:M4, B3:M3= B7, "Inga resultat")

    Excel FILTER-funktionen - användningsanvisningar

    Om du vill filtrera effektivt i Excel med hjälp av formler finns det några viktiga punkter att tänka på:

    • FILTER-funktionen sprider automatiskt resultaten vertikalt eller horisontellt i arbetsbladet, beroende på hur dina ursprungliga data är organiserade. Se därför till att du alltid har tillräckligt många tomma celler nere och till höger, annars får du ett #SPILL-fel.
    • Resultaten av Excel-funktionen FILTER är dynamiska, vilket innebär att de uppdateras automatiskt när värdena i den ursprungliga datamängden ändras. Det intervall som anges för funktionen matris argumentet uppdateras inte när nya poster läggs till i källdata. Om du vill att matris för att ändra storlek automatiskt, konvertera den sedan till en Excel-tabell och skapa formler med strukturerade referenser eller skapa ett dynamiskt namngivet intervall.

    Hur man filtrerar i Excel - exempel på formler

    Nu när du vet hur en grundläggande Excel-filterformel fungerar är det dags att få en inblick i hur den kan utökas för att lösa mer komplexa uppgifter.

    Filtrera med flera kriterier (AND-logik)

    Om du vill filtrera data med flera kriterier anger du två eller flera logiska uttryck för . argument:

    FILTER(array, ( intervall1 = kriterier1 ) * ( intervall2 = kriterier2 ), "Inga resultat")

    Multiplikationen bearbetar matriserna med AND-logik , vilket säkerställer att endast de poster som uppfyller alla kriterier. Tekniskt sett fungerar det på följande sätt:

    Resultatet av varje logiskt uttryck är en matris med booleska värden, där TRUE är lika med 1 och FALSE är lika med 0. Därefter multipliceras elementen i alla matriser i samma positioner. Eftersom multiplikation med noll alltid ger noll, kommer endast de element för vilka alla kriterier är TRUE in i den resulterande matrisen, och följaktligen är det endast dessa element som tas ut.

    Nedanstående exempel visar hur denna generiska formel fungerar.

    Exempel 1. Filtrera flera kolumner i Excel

    Om vi utökar vår grundläggande Excel FILTER-formel lite ytterligare kan vi filtrera data efter två kolumner: Grupp (kolumn B) och Vinst (kolumn C).

    För att göra detta ställer vi upp följande kriterier: Skriv in namnet på målgruppen i F2 ( kriterier1 ) och det minsta antalet segrar som krävs i F3 ( kriterier2 ).

    Med tanke på att våra källdata är i A2:C13 ( matris ), grupperna finns i B2:B13 ( intervall1 ) och segrar i C2:C13 ( intervall2 ), har formeln följande form:

    =FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "Inga resultat")

    Som resultat får du en lista över spelare i grupp A som har tagit 2 eller fler segrar:

    Exempel 2. Filtrera data mellan datum

    Först och främst bör det noteras att det inte går att skapa en generisk formel för att filtrera efter datum i Excel. I olika situationer måste du bygga upp kriterierna på olika sätt, beroende på om du vill filtrera efter ett visst datum, en månad eller ett år. Syftet med det här exemplet är att visa det allmänna tillvägagångssättet.

    Till våra exempeldata lägger vi till ytterligare en kolumn med datum för den senaste vinsten (kolumn D). Nu ska vi extrahera de vinster som inträffade under en viss period, till exempel mellan den 17 maj och den 31 maj.

    Observera att i detta fall gäller båda kriterierna för samma intervall:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Inga resultat")

    Där G2 och G3 är de datum som ska filtreras mellan.

    Filtrera med flera kriterier (OR-logik)

    För att extrahera data baserat på flera OR-villkor använder du också logiska uttryck som i de tidigare exemplen, men i stället för att multiplicera dem adderar du dem. När de booleska matriserna som uttrycken returnerar summeras kommer den resulterande matrisen att ha 0 för poster som inte uppfyller något av kriterierna (dvs. alla kriterier är FALSK), och sådana poster kommer att filtreras bort. De poster som vidOm minst ett kriterium är VÄRA kommer det att tas ut.

    Här är den generiska formeln för att filtrera kolumner med OR-logiken:

    FILTER(array, ( intervall1 = kriterier1 ) + ( intervall2 = kriterier2 ), "Inga resultat")

    Som exempel kan vi ta fram en lista över spelare som har Detta eller detta. antal segrar.

    Om man antar att källdata finns i A2:C13, vinsterna finns i C2:C13 och de intressanta vinstsiffrorna finns i F2 och F3, skulle formeln se ut på följande sätt:

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Inga resultat")

    Som resultat vet du vilka spelare som har vunnit alla partier (4) och vilka som inte har vunnit något (0):

    Filtrera baserat på flera AND- och OR-kriterier

    Om du behöver använda båda kriterietyperna ska du komma ihåg den här enkla regeln: sammanfoga AND-kriterierna med asterisk (*) och OR-kriterierna med plustecknet (+).

    Om du till exempel vill få tillbaka en lista över spelare som har ett visst antal segrar (F2) OCH som tillhör den grupp som nämns i antingen E2 ELLER E3, ska du skapa följande kedja av logiska uttryck:

    =FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "Inga resultat")

    Du får följande resultat:

    Hur man filtrerar dubbletter i Excel

    När du arbetar med stora kalkylblad eller kombinerar data från olika källor finns det ofta en möjlighet att det finns dubbletter.

    Om du vill filtrera bort duplikat och extrahera unika objekt och använd sedan funktionen UNIQUE som förklaras i den ovan länkade handledningen.

    Om ditt mål är att filtrera dubbletter , dvs. ta ut poster som förekommer mer än en gång, och använd sedan funktionen FILTER tillsammans med COUNTIFS.

    Tanken är att få fram antalet förekomster för alla poster och extrahera de som är större än 1. För att få fram antalet poster anger du samma intervall för varje kriterier_intervall / kriterier par COUNTIFS gillar detta:

    FILTER( matris , COUNTIFS( kolumn1 , kolumn1, kolumn2 , kolumn2 )>1, "Inga resultat")

    Om du till exempel vill filtrera dubbla rader från data i A2:C20 baserat på värdena i alla tre kolumnerna kan du använda följande formel:

    =FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "Inga resultat")

    Tips: Om du vill filtrera dubbletter baserat på värdena i viktiga kolumner , inkludera endast dessa specifika kolumner i funktionen COUNTIFS.

    Hur man filtrerar bort blanksteg i Excel

    En formel för att filtrera bort tomma celler är i själva verket en variant av Excel-formeln FILTER med flera AND-kriterier. I det här fallet kontrollerar vi om alla (eller vissa) kolumner har data och utesluter de rader där minst en cell är tom. För att identifiera icke-tomma celler använder du operatorn "not equal to" () tillsammans med en tom sträng (""") på följande sätt:

    FILTER(array, ( kolumn1 "") * ( kolumn2 =""), "Inga resultat")

    För att filtrera bort rader som innehåller en eller flera tomma celler, med källdata i A2:C12, skrivs följande formel in i E3:

    Filtrera celler som innehåller specifik text

    Om du vill extrahera celler som innehåller viss text kan du använda funktionen FILTER tillsammans med den klassiska formeln Om cellen innehåller:

    FILTER(array, ISNUMBER(SEARCH(" text ", sortiment ))), "Inga resultat")

    Så här fungerar det:

    • SEARCH-funktionen söker efter en angiven textsträng i ett givet intervall och returnerar antingen ett nummer (positionen för det första tecknet) eller felet #VALUE! (texten har inte hittats).
    • Funktionen ISNUMBER omvandlar alla siffror till TRUE och fel till FALSE och skickar den resulterande booleska matrisen till . argumentet i FILTER-funktionen.

    I det här exemplet har vi lagt till Efternamn av spelare i B2:B13, skriver den del av namnet som vi vill hitta i G2 och använder sedan följande formel för att filtrera data:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Inga resultat")

    Resultatet är att formeln hämtar de två efternamn som innehåller "han":

    Filtrera och beräkna (summa, medelvärde, min, max, etc.)

    En bra sak med Excel-funktionen FILTER är att den inte bara kan extrahera värden med villkor, utan också sammanfatta de filtrerade uppgifterna. Kombinera FILTER med aggregeringsfunktioner som SUM, AVERAGE, COUNT, MAX eller MIN.

    Om du till exempel vill sammanställa data för en viss grupp i F1 använder du följande formler:

    Totalt antal segrar:

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

    Genomsnittliga vinster:

    = MEDELVÄRDE(FILTER(C2:C13, B2:B13=F1, 0))

    Högsta antal vinster:

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

    Minsta antal vinster:

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

    Var uppmärksam på att vi i alla formler använder noll för if_empty argumentet, så formlerna skulle återge 0 om inga värden som uppfyller kriterierna hittas. Om du anger en text som "Inga resultat" skulle det resultera i ett #VALUE-fel, vilket naturligtvis är det sista du vill ha :)

    Storleksmässigt känslig FILTER-formel

    En standardformel i Excel FILTER är skiftlägesoberoende, vilket innebär att den inte skiljer mellan små och stora bokstäver. Om du vill skilja mellan olika textbokstäver kan du använda EXACT-funktionen i . Detta tvingar FILTER att göra logiska tester med hänsyn till storleken på bokstäverna:

    FILTER(array, EXACT( sortiment , kriterier ), "Inga resultat")

    Om du antar att du har båda grupperna A och a och vill extrahera poster där gruppen är det lilla "a". Använd följande formel för att göra det, där A2:C13 är källdata och B2:B13 är de grupper som ska filtreras:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "Inga resultat")

    Som vanligt kan du ange målgruppen i en fördefinierad cell, till exempel F1, och använda den cellreferensen i stället för hårdkodad text:

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

    Hur man filtrerar data och returnerar endast specifika kolumner

    För det mesta är filtrering av alla kolumner med en enda formel vad Excel-användare vill ha. Men om källtabellen innehåller tiotals eller till och med hundratals kolumner kan du säkert vilja begränsa resultaten till några få viktiga kolumner.

    Exempel 1. Filtrera några angränsande kolumner

    Om du vill att vissa angränsande kolumner ska visas i ett FILTER-resultat, inkludera endast dessa kolumner i matris eftersom det är detta argument som avgör vilka kolumner som ska returneras.

    I det grundläggande exemplet med FILTER-formeln antar vi att du vill återge de två första kolumnerna ( Namn och Grupp ). Du anger alltså A2:B13 för den matris argument:

    =FILTER(A2:B13, B2:B13=F1, "Inga resultat")

    Resultatet är en lista över deltagare i den målgrupp som definieras i F1:

    Exempel 2. Filtrera kolumner som inte är intilliggande

    För att få FILTER-funktionen att returnera icke sammanhängande kolumner kan du använda det här smarta knepet:

    1. Gör en FILTER-formel med önskat villkor och använd hela tabellen för matris .
    2. Nästar in ovanstående formel i en annan FILTER-funktion. För att konfigurera "omslagsfunktionen" använder du en arraykonstant med TRUE- och FALSE-värden eller 1:or och 0:or för . där TRUE (1) markerar de kolumner som ska behållas och FALSE (0) markerar de kolumner som ska uteslutas.

    Om du till exempel endast vill returnera Namn (1:a kolumnen) och Vinst (3:e kolumnen) använder vi {1,0,1} eller {TRUE,FALSE,TRUE} för . argumentet för den yttre FILTER-funktionen:

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

    Eller

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

    Hur du begränsar antalet rader som returneras av FILTER-funktionen

    Om FILTER-formeln hittar en hel del resultat, men arbetsbladet har begränsat utrymme och du inte kan ta bort uppgifterna nedan, kan du begränsa antalet rader som FILTER-funktionen returnerar.

    Låt oss se hur det fungerar med ett exempel på en enkel formel som tar fram spelare från målgruppen i F1:

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

    Formeln ovan matar ut alla poster som hittas, 4 rader i vårt fall. Men anta att du bara har plats för två. Om du bara vill visa de två första raderna som hittats är det här vad du behöver göra:

    • Sätt in FILTER-formeln i matris argumentet för INDEX-funktionen.
    • För row_num argumentet för INDEX, använd en vertikal arraykonstant som {1;2}. Den bestämmer hur många rader som ska returneras (2 i vårt fall).
    • För kolumn_nummer argumentet använder du en horisontell arraykonstant som {1,2,3}. Den anger vilka kolumner som ska returneras (de tre första kolumnerna i det här exemplet).
    • Om du vill ta hand om eventuella fel när inga data som motsvarar kriterierna hittas kan du använda formeln med funktionen IFERROR.

    Den fullständiga formeln har följande form:

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

    När du arbetar med stora tabeller kan det vara ganska besvärligt att skriva arraykonstanter manuellt. Inga problem, SEQUENCE-funktionen kan generera de sekventiella numren automatiskt åt dig:

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

    Den första SEQUENCE genererar en vertikal matris som innehåller så många sekventiella nummer som anges i det första (och enda) argumentet. Den andra SEQUENCE använder funktionen COLUMNS för att räkna antalet kolumner i datamängden och producerar en motsvarande horisontell matris.

    Tips. Om du vill returnera data från särskilda kolumner , inte alla kolumner, i den horisontella konstanten som du använder för den kolumn_nummer argumentet för INDEX, inkludera endast dessa specifika nummer. Om du till exempel vill extrahera data från den första och tredje kolumnen använder du {1,3}.

    Excel FILTER-funktionen fungerar inte

    Om din Excel FILTER-formel resulterar i ett fel är det troligen något av följande:

    #CALC! fel

    Uppstår om den valfria if_empty inte anges och inga resultat som uppfyller kriterierna hittas. Anledningen är att Excel för närvarande inte stöder tomma matriser. För att undvika sådana fel bör du alltid definiera if_empty värde i dina formler.

    #VALUE fel

    Uppstår när matris och . argumentet har inkompatibla dimensioner.

    #N/A, #VALUE, etc.

    Olika fel kan uppstå om något värde i . argumentet är ett fel eller kan inte omvandlas till ett boolskt värde.

    #NAME fel

    Detta inträffar när du försöker använda FILTER i en äldre version av Excel. Kom ihåg att det är en ny funktion som endast är tillgänglig i Office 365 och Excel 2021.

    I nya Excel uppstår ett #NAME-fel om du råkar stava fel på funktionens namn.

    #SPILL fel

    Oftast uppstår felet om en eller flera celler i spillområdet inte är helt tomma. För att åtgärda det är det bara att rensa eller ta bort celler som inte är tomma. För att undersöka och lösa andra fall, se #SPILL!-felet i Excel: vad det betyder och hur du åtgärdar det.

    #REF! fel

    Uppstår när en FILTER-formel används mellan olika arbetsböcker och källarbetsboken stängs.

    Så här gör du för att fila data dynamiskt i Excel. Tack för att du läste och hoppas att vi ses på vår blogg nästa vecka!

    Ladda ner övningsboken

    Filtrera i Excel med formler (.xlsx-fil)

    Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.