Excel SORT-funktion - automatisk sortering av data med hjälp av en formel

  • Dela Detta
Michael Brown

I handledningen visas hur du använder funktionen SORT för att sortera datamatriser dynamiskt. Du lär dig en formel för att sortera alfabetiskt i Excel, ordna siffror i stigande eller fallande ordning, sortera efter flera kolumner och mycket mer.

Funktionen Sortera har funnits länge, men i och med införandet av dynamiska matriser i Excel 365 finns det ett otroligt enkelt sätt att sortera med formler. Det fina med den här metoden är att resultaten uppdateras automatiskt när källdata ändras.

    Excel SORT-funktionen

    Funktionen Sortera i Excel sorterar innehållet i en matris eller ett område efter kolumner eller rader, i stigande eller fallande ordning.

    SORT tillhör gruppen Dynamic array-funktioner. Resultatet är en dynamisk array som automatiskt sprider sig vertikalt eller horisontellt till angränsande celler, beroende på formen på källarrayen.

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

    SORT(array, [sort_index], [sort_order], [by_col])

    Var:

    Array (obligatoriskt) - är en matris med värden eller ett intervall av celler som ska sorteras. Det kan vara vilka värden som helst, t.ex. text, siffror, datum, tider osv.

    Sort_index (valfritt) - ett heltal som anger vilken kolumn eller rad som ska sorteras efter. Om det utelämnas används standardindex 1.

    Sort_order (valfritt) - anger sorteringsordningen:

    • 1 eller utelämnas (standard) - stigande ordning, dvs. från den minsta till den största.
    • -1 - fallande ordning, dvs. från störst till minst.

    By_col (valfritt) - ett logiskt värde som anger sorteringsriktningen:

    • FALSE eller utelämnas (standard) - sorterar efter rad. Du kommer att använda det här alternativet för det mesta.
    • TRUE - sortera efter kolumn. Använd det här alternativet om dina data är organiserade horisontellt i kolumner som i det här exemplet.

    Excel SORT-funktionen - tips och anteckningar

    SORT är en ny dynamisk array-funktion och som sådan har den ett par särskilda egenskaper som du bör känna till:

    • För närvarande är SORT-funktionen endast tillgänglig i Microsoft 365 och Excel 2021. Excel 2019 och Excel 2016 har inte stöd för dynamiska matrisformler, så SORT-funktionen är inte tillgänglig i dessa versioner.
    • Om matrisen som returneras av en SORT-formel är slutresultatet (dvs. inte överförs till en annan funktion) skapar Excel dynamiskt ett intervall av lämplig storlek och fyller det med de sorterade värdena. Se till att du alltid har tillräckligt många tomma celler nedanför eller/och till höger om cellen där du anger formeln, annars uppstår ett #SPILL-fel.
    • Resultaten uppdateras dynamiskt när källdata ändras. matris som levereras till formeln inte automatiskt för att inkludera nya poster som läggs till utanför den refererade matris För att inkludera sådana objekt måste du antingen uppdatera matris referens i formeln, eller konvertera källområdet till en tabell som i det här exemplet, eller skapa ett dynamiskt namngivet intervall.

    Grundläggande formel för Excel SORT

    Det här exemplet visar en grundläggande formel för att sortera data i Excel i stigande och fallande ordning.

    Anta att dina data är ordnade i alfabetisk ordning enligt skärmbilden nedan. Du vill sortera siffrorna i kolumn B utan att bryta eller blanda data.

    Formel för att sortera i stigande ordning

    Om du vill sortera värdena i kolumn B från minsta till största värde, kan du använda följande formel:

    =SORT(A2:B8, 2, 1)

    Var:

    • A2:B8 är källmatrisen
    • 2 är kolumnnumret som ska sorteras efter
    • 1 är den stigande sorteringsordningen

    Eftersom våra data är organiserade i rader kan det sista argumentet utelämnas för att få FALSE - sortera efter rader.

    Skriv bara in formeln i en tom cell (D2 i vårt fall), tryck på Enter och resultatet kommer automatiskt att spillas till D2:E8.

    Formel för att sortera i fallande ordning

    Om du vill sortera data i fallande ordning, dvs. från störst till minst, ställer du in sort_order argumentet till -1 på följande sätt:

    =SORT(A2:B8, 2, -1)

    Skriv in formeln i den övre vänstra cellen i målområdet och du får det här resultatet:

    På samma sätt kan du sortera textvärden i alfabetisk ordning från A till Z eller från Z till A.

    Hur man sorterar data i Excel med hjälp av en formel

    Nedanstående exempel visar några typiska användningsområden för SORT-funktionen i Excel och ett par andra som inte är triviala.

    Excel Sortera efter kolumn

    När du sorterar data i Excel ändrar du oftast ordningen på raderna. Men när data är organiserade horisontellt med rader som innehåller etiketter och kolumner som innehåller poster, kan du behöva sortera från vänster till höger i stället för uppifrån och ner.

    Om du vill sortera efter kolumn i Excel ställer du in by_col argumentet till TRUE. I det här fallet, sort_index representerar en rad, inte en kolumn.

    Om du t.ex. vill sortera nedanstående data efter antal från högst till lägst, använd den här formeln:

    =SORT(B1:H2, 2, 1, TRUE)

    Var:

    • B1:H2 är källdata som ska sorteras
    • 2 är sorteringsindexet, eftersom vi sorterar siffror i den andra raden.
    • -1 anger den fallande sorteringsordningen.
    • TRUE betyder att kolumnerna ska sorteras, inte raderna.

    Sortera efter flera kolumner i olika ordning (flernivåsortering)

    När du arbetar med komplexa datamodeller kan du ofta behöva en sortering i flera nivåer. Kan det göras med en formel? Ja, det är enkelt! Det du gör är att ange konstanter för arrayen för sort_index och sort_order argument.

    Om du till exempel vill sortera nedanstående data först efter Region (kolumn A) från A till Z, och sedan med Antal . (kolumn C) från den minsta till den största, ange följande argument:

    • Array är uppgifterna i A2:C13.
    • Sort_index är konstanten {1,3}, eftersom vi först sorterar efter Region (1:a kolumnen), och sedan med Antal . (3:e kolumnen).
    • Sort_order är arraykonstanten {1,-1}, eftersom den första kolumnen ska sorteras i stigande ordning och den tredje kolumnen i fallande ordning.
    • By_col utelämnas eftersom vi sorterar rader, vilket är standard.

    Genom att lägga ihop argumenten får vi denna formel:

    =SORT(A2:C13, {1,3}, {1,-1})

    Och det fungerar perfekt! Textvärdena i den första kolumnen sorteras i alfabetisk ordning och siffrorna i den tredje kolumnen från störst till minst:

    Sortera och filtrera i Excel

    Om du vill filtrera data med vissa kriterier och ordna utdata, använd funktionerna SORT och FILTER tillsammans:

    SORT(FILTER(array, kriterier_intervall = kriterier ), [sort_index], [sort_order], [by_col])

    FILTER-funktionen hämtar en matris med värden baserat på de kriterier som du definierar och skickar matrisen till det första argumentet i SORT.

    Det bästa med den här formeln är att den också ger ut resultaten som ett dynamiskt spillområde, utan att du behöver trycka på Ctrl + Shift + Enter eller gissa hur många celler du ska kopiera den till. Som vanligt skriver du en formel i den översta cellen och trycker på Enter.

    Som exempel ska vi extrahera artiklar med en kvantitet som är lika med eller större än 30 (>=30) från källdata i A2:B9 och ordna resultaten i stigande ordning.

    För detta ställer vi först in villkoret, till exempel i cell E2 som visas i bilden nedan. Sedan bygger vi vår Excel SORT-formel på detta sätt:

    =SORT(FILTER(A2:B9, B2:B9>=E2), 2)

    Förutom matris som genereras av FILTER-funktionen, anger vi bara den sort_index De återstående två argumenten utelämnas eftersom standardvärdena fungerar precis som vi behöver (stigande sortering, efter rad).

    Få fram N största eller minsta värden och sortera resultaten.

    När du analyserar stora mängder information finns det ofta ett behov av att extrahera ett visst antal toppvärden. Kanske inte bara extrahera, utan också ordna dem i önskad ordning. Och helst välja vilka kolumner som ska ingå i resultaten. Låter det svårt? Inte med de nya dynamiska matrisfunktionerna!

    Här är en generisk formel:

    INDEX(SORT(...), SEKVENS( n ), { column1_to_return , column2_to_return , ...})

    Var n är numret på de värden som du vill återge.

    Anta att du vill få fram en topp 3-lista utifrån siffrorna i kolumn C i nedanstående datamängd.

    För att få det gjort sorterar du först matrisen A2:C13 efter den tredje kolumnen i fallande ordning:

    SORT(A2:C13, 3, -1)

    Och sedan, inbädda ovanstående formel i den första ( matris ) för INDEX-funktionen för att få matrisen sorterad från högst till lägst.

    För den andra ( row_num ), som anger hur många rader som ska returneras, genererar du de nödvändiga sekventiella numren med hjälp av SEQUENCE-funktionen. Eftersom vi behöver tre toppvärden använder vi SEQUENCE(3), vilket är detsamma som att ange en vertikal arraykonstant {1;2;3} direkt i formeln.

    För den tredje ( col_num ), som anger hur många kolumner som ska returneras, anger du kolumnnumren i form av en horisontell arraykonstant. Vi vill returnera kolumnerna B och C, så vi använder arrayen {2,3}.

    Till slut får vi följande formel:

    =INDEX(SORT(A2:C13, 3, -1), SEQUENCE(3), {2,3})

    Och det ger precis de resultat vi vill ha:

    För att återvända 3 botten värden, sortera helt enkelt originaldata från minsta till största. För detta ändrar du sort_order argumentet från -1 till 1:

    =INDEX(SORT(A2:C13, 3, 1), SEQUENCE(3), {2,3})

    Återge ett sorterat värde i en viss position

    Om du tittar från en annan synvinkel, vad händer om du bara vill returnera en specifik sorteringsposition? Säg, bara den första, andra eller tredje posten i den sorterade listan? Använd den förenklade versionen av INDEX SORT-formeln som vi diskuterade ovan för att få det gjort:

    INDEX(SORT(...), n , { column1_to_return , column2_to_return , ...})

    Var n är den intressanta positionen.

    Om du t.ex. vill få en viss position från toppen (dvs. från data som är sorterade i fallande ordning) använder du den här formeln:

    =INDEX(SORT(A2:C13, 3, -1), F1, {2,3})

    För att få en specifik position från botten (dvs. från data sorterade i stigande ordning), använd den här:

    =INDEX(SORT(A2:C13, 3, 1), I1, {2,3})

    Där A2:C13 är källdata, F1 är positionen från toppen, I1 är positionen från botten och {2,3} är de kolumner som ska returneras.

    Använd Excel-tabellen för att få sorteringsmatrisen att expandera automatiskt

    Som du redan vet uppdateras den sorterade matrisen automatiskt när du gör ändringar i de ursprungliga uppgifterna. Detta är standardbeteendet för alla dynamiska matrisfunktioner, inklusive SORT. När du lägger till nya poster utanför den refererade matrisen inkluderas de dock inte automatiskt i en formel. Om du vill att formeln ska reagera på sådana ändringar, kan du konvertera källområdet till ett heltfunktionell Excel-tabell och använda strukturerade referenser i formeln.

    För att se hur det fungerar i praktiken kan du ta följande exempel.

    Antag att du använder nedanstående formel SORT i Excel för att ordna värdena i intervallet A2:B8 i alfabetisk ordning:

    =SORT(A2:B8, 1, 1)

    Sedan matar du in en ny post i rad 9... och blir besviken när du ser att den nytillkomna posten inte ingår i spillområdet:

    Konvertera nu källområdet till en tabell. För att göra detta markerar du helt enkelt intervallet inklusive kolumnrubrikerna (A1:B8) och trycker på Ctrl + T . När du skapar formeln markerar du källområdet med musen så kommer tabellnamnet att infogas i formeln automatiskt (detta kallas en strukturerad referens):

    =SORT(Tabell1, 1, 1)

    När du skriver en ny post precis under den sista raden expanderar tabellen automatiskt och de nya uppgifterna inkluderas i SORT-formelns spillområde:

    Excel SORT-funktionen fungerar inte

    Om din SORT-formel resulterar i ett fel beror det troligen på följande orsaker.

    #NAME error: äldre Excel-version

    SORT är en ny funktion och fungerar endast i Excel 365 och Excel 2021. I äldre versioner där den här funktionen inte stöds uppstår felet #NAME?

    #SPILL fel: något blockerar spillområdet

    Om en eller flera celler i spillområdet inte är helt tomma eller sammanfogade visas felet #SPILL! För att åtgärda det är det bara att ta bort blockeringen. För mer information, se Excel #SPILL! error - vad det betyder och hur du åtgärdar det.

    #VALUE fel: ogiltiga argument

    När du stöter på ett #VALUE!-fel, kontrollera sort_index och sort_order argument. Sort_index bör inte överstiga antalet kolumner är matris , och sort_order ska vara antingen 1 (stigande) eller -1 (fallande).

    #REF-fel: källarbetsboken är stängd

    Eftersom dynamiska matriser har begränsat stöd för referenser mellan arbetsböcker kräver funktionen Sortera att båda filerna är öppna. Om källarbetsboken är stängd kommer en formel att ge ett #REF!-fel. För att åtgärda det öppnar du bara den refererade filen.

    Så här sorterar du data i Excel med hjälp av formler. Tack för att du läste och hoppas att vi ses på vår blogg nästa vecka!

    Arbetsbok för övning för nedladdning

    Sortering 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.