Excel SORTBY-funktionen - anpassad sortering med formel

  • Dela Detta
Michael Brown

Idag ska vi titta närmare på syntaxen och typiska användningsområden för den nya dynamiska matrisen SORTBY-funktionen. Du kommer att lära dig hur du kan anpassa sortering i Excel med en formel, slumpmässigt sortera en lista, ordna celler efter textlängd och mycket mer.

Microsoft Excel erbjuder ett antal sätt att ordna textdata alfabetiskt, datum kronologiskt och siffror från minsta till största eller från högsta till lägsta. Det finns också ett sätt att sortera efter egna listor. Förutom den konventionella sorteringsfunktionen introducerar Excel 365 ett helt nytt sätt att sortera data med hjälp av formler - mycket praktiskt och otroligt enkelt att använda!

    Excel SORTBY-funktionen

    Funktionen SORTBY i Excel är utformad för att sortera ett område eller en matris baserat på värdena i ett annat område eller en annan matris. Sortering kan göras efter en eller flera kolumner.

    SORTBY är en av sex nya funktioner för dynamiska matriser i Excel för Microsoft 365 och Excel 2021. Resultatet är en dynamisk matris som sprider sig till angränsande celler och uppdateras automatiskt när källdata ändras.

    SORTBY-funktionen har ett variabelt antal argument - de två första är obligatoriska och de andra är valfria:

    SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2],...)

    Array (obligatoriskt) - det intervall av celler eller den matris av värden som ska sorteras.

    By_array1 (obligatoriskt) - det intervall eller den matris som ska sorteras efter.

    Sort_order1 (valfritt) - sorteringsordning:

    • 1 eller utelämnas (standard) - stigande
    • -1 - fallande

    By_array2 / Sort_order2 , ... (valfritt) - ytterligare matriser/ordningspar som ska användas för sortering.

    Viktigt att notera: För närvarande är SORTBY-funktionen endast tillgänglig med Microsoft 365-prenumerationer och Excel 2021. I Excel 2019, Excel 2016 och tidigare versioner är SORTBY-funktionen inte tillgänglig.

    SORTBY-funktionen - 4 saker att komma ihåg

    För att en SORTBY-formel i Excel ska fungera korrekt finns det några viktiga punkter att ta hänsyn till:

    • By_array argumenten ska vara antingen en rad höga eller en kolumn breda.
    • matris och alla by_array argumenten måste ha kompatibla dimensioner, t.ex. vid sortering i två kolumner, matris , by_array1 och by_array2 bör ha samma antal rader, annars uppstår ett #VALUE-fel.
    • Om matrisen som returneras av SORTBY är det slutliga resultatet (som skrivs ut i en cell och inte skickas till en annan funktion) skapar Excel ett dynamiskt spillområde och fyller det med resultaten. Se till att du har tillräckligt många tomma celler nedanför och/eller till höger om cellen där du skriver in formeln, annars får du ett #SPILL-fel.
    • Resultaten av SORTBY-formlerna uppdateras automatiskt när källdata ändras. Nya poster som läggs till utanför den matris som refereras i formeln inkluderas dock inte i resultaten om du inte uppdaterar matris referens. För att den refererade matrisen ska expandera automatiskt, konvertera källområdet till en Excel-tabell eller skapa ett dynamiskt namngivet område.

    Grundläggande SORTBY-formel i Excel

    Här är ett typiskt scenario för användning av en SORTBY-formel i Excel:

    Antag att du har en lista med projekt med namnet Värde Du vill sortera projekten efter deras värde på ett separat blad. Eftersom andra användare inte behöver se siffrorna vill du helst inte inkludera Värde kolumnen i resultaten.

    Uppgiften kan enkelt utföras med funktionen SORTBY, för vilken du anger följande argument:

    • Array är A2:A10 - eftersom du inte vill att Värde kolumnen som ska visas i resultaten, lämnar du den utanför matrisen.
    • By_array1 är B2:B10 - sortera efter Värde .
    • Sort_order1 är -1 - fallande, dvs. från högsta till lägsta.

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

    =SORTBY(A2:B10, B2:B10, -1)

    För enkelhetens skull använder vi formeln på samma blad - skriv in den i D2 och tryck på Enter. Resultaten "sprids" automatiskt till så många celler som behövs (D2:D10 i vårt fall). Men tekniskt sett finns formeln bara i den första cellen, och om du raderar den från D2 raderas alla resultat.

    När formeln används på ett annat blad får den följande form:

    =SORTBY(Sheet1!A2:A10, Sheet1!B2:B10, -1)

    Var Blad 1 är det arbetsblad som innehåller de ursprungliga uppgifterna.

    Användning av SORTBY-funktionen i Excel - exempel på formler

    Nedan hittar du ytterligare några exempel på hur SORTBY används, som förhoppningsvis kan vara användbara och insiktsfulla.

    Sortera efter flera kolumner

    Den grundläggande formeln ovan sorterar data efter en kolumn. Men vad händer om du behöver lägga till ytterligare en sorteringsnivå?

    Vi antar att vår exempeltabell har två fält, Status (kolumn B) och Värde (kolumn C) , vi vill sortera först efter Status i alfabetisk ordning, och sedan efter Värde nedåtgående.

    För att sortera i två kolumner lägger vi bara till ytterligare ett par av by_array / sort_order argument:

    • Array är A2:C10 - den här gången vill vi inkludera alla tre kolumnerna i resultatet.
    • By_array1 är B2:B10 - först, sortera efter Status .
    • Sort_order1 är 1 - sortera alfabetiskt från A till Z.
    • By_array2 är C2:C10 - sortera då efter Värde .
    • Sort_order2 är -1 - sortera från störst till minst.

    Som resultat får vi följande formel:

    =SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)

    Detta innebär att våra data omorganiseras exakt enligt våra anvisningar:

    Anpassad sortering i Excel med en formel

    Om du vill sortera data i en egen ordning kan du antingen använda Excels funktion Anpassad sortering eller bygga en SORTBY MATCH-formel på det här sättet:

    SORTBY(array, MATCH( range_to_sort , anpassad_lista , 0))

    När du tittar närmare på vår datamängd kommer du förmodligen att tycka att det är mer praktiskt att sortera projekten efter deras status "logiskt", t.ex. efter betydelse, snarare än alfabetiskt.

    För att få det gjort skapar vi först en anpassad lista i önskad sorteringsordning ( På gång , Slutfört , I vänteläge ) skriver varje värde i en separat cell i intervallet E2:E4.

    Med hjälp av den generiska formeln ovan kan vi sedan ange källområdet för matris (A2:C10), den Status kolumnen för range_to_sort (B2:B10), och den anpassade listan som vi skapade för anpassad_lista (E2:E4).

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))

    Resultatet är att projekten är sorterade efter status precis som det behövs:

    Om du vill sortera den anpassade listan i omvänd ordning anger du -1 för sort_order1 argument:

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)

    Och du kommer att få projekten sorterade i motsatt riktning:

    Vill du dessutom sortera poster inom varje status? Inga problem, lägg till ytterligare en sorteringsnivå i formeln, till exempel med Värde (C2:C10) och ange önskad sorteringsordning, i vårt fall stigande:

    =SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)

    En stor fördel med SORTBY-formeln jämfört med Excels funktion Anpassad sortering är att formeln uppdateras automatiskt när de ursprungliga uppgifterna ändras, medan funktionen kräver att du rensar upp och sorterar om vid varje ändring.

    Hur denna formel fungerar:

    Som redan nämnts kan Excels SORTBY-funktion endast bearbeta "sortera efter"-matriser vars dimensioner är kompatibla med källmatrisen. Eftersom vår källmatris (C2:C10) innehåller 9 rader och den anpassade listan (E2:E4) endast 3 rader, kan vi inte skicka den direkt till by_array I stället använder vi funktionen MATCH för att skapa en matris med nio rader:

    MATCH(B2:B10, E2:E5, 0)

    Här använder vi Status kolumnen (B2:B10) som sökvärden och vår anpassade lista (E2:E5) som sökarray. Det sista argumentet sätts till 0 för att leta efter exakta överensstämmelser. Som resultat får vi en array med 9 nummer, som var och en representerar den relativa positionen för en viss Status värde i den anpassade listan:

    {1;3;2;1;3;2;2;1;2}

    Denna matris går direkt till by_array argumentet för SORTBY-funktionen och tvingar den att placera data i den ordning som motsvarar elementen i matrisen, dvs. först poster som representeras av 1:or, sedan poster som representeras av 2:or och så vidare.

    Slumpmässig sortering i Excel med en formel

    I tidigare Excel-versioner kan du göra en slumpmässig sortering med funktionen RAND, vilket förklaras i den här handledningen: Hur man slumpmässigt sorterar en lista i Excel.

    I nya Excel kan du använda en mer kraftfull RANDARRAY-funktion tillsammans med SORTBY:

    SORTBY( matris , RANDARRAY(ROWS( matris )))

    Var matris är de källdata som du vill blanda.

    Den här generiska formeln fungerar både för en lista som består av en enda kolumn och för ett intervall med flera kolumner.

    Om du till exempel vill sortera en lista slumpmässigt i A2:A10 använder du den här formeln:

    =SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10)))

    För att blanda data i A2:C10 och hålla ihop raderna, använd den här:

    =SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10)))

    Hur denna formel fungerar:

    Funktionen RANDARRAY producerar en matris med slumpmässiga tal som ska användas för sortering, och du skickar den till by_array argumentet i SORTBY. För att ange hur många slumptal som ska genereras räknar du antalet rader i källområdet med hjälp av ROWS-funktionen och "matar" det antalet till rader argument från RANDARRAY. Det är det!

    Observera: Precis som sin föregångare är RANDARRAY en flyktig funktion som genererar en ny matris med slumpmässiga tal varje gång kalkylbladet räknas om. Detta leder till att dina data kommer att sorteras om vid varje ändring i kalkylbladet. För att förhindra automatisk sortering kan du använda Klistra in speciellt > Värden för att ersätta formler med deras värden.

    Sortera celler efter strängens längd

    Om du vill sortera cellerna efter längden på de textsträngar de innehåller använder du funktionen LEN för att räkna antalet tecken i varje cell och anger de beräknade längderna till funktionen by_array argument för SORTBY. sort_order kan sättas till antingen 1 eller -1, beroende på vilken sorteringsordning som föredras.

    Sortera en textsträng från den minsta till den största:

    SORTBY(array, LEN(array), 1)

    Sortera en textsträng från störst till minst:

    SORTBY(array, LEN(array), -1)

    Här är en formel som visar detta tillvägagångssätt på riktiga data:

    =SORTBY(A2:A7, LEN(A2:A7), 1)

    Där A2:A7 är de ursprungliga cellerna som du vill sortera efter textlängd i stigande ordning:

    SORTBY mot SORT

    I gruppen av nya Excel-funktioner för dynamiska matriser finns det två som är utformade för sortering. Nedan listar vi de viktigaste skillnaderna och likheterna samt när de bäst används.

    • Till skillnad från SORT-funktionen kräver SORTBY inte att "sortera efter"-matrisen är en del av källmatrisen och inte heller att den visas i resultatet. Om du vill sortera ett intervall baserat på en annan oberoende matris eller en anpassad lista är SORTBY rätt funktion att använda. Om du vill sortera ett intervall baserat på dess egna värden är SORT mer lämpligt.
    • Båda funktionerna har stöd för flera sorteringsnivåer och båda kan kedjas ihop med andra dynamiska matriser och konventionella funktioner.
    • Båda funktionerna är endast tillgängliga för Excel 365- och Excel 2021-användare.

    Excel SORTBY-funktionen fungerar inte

    Om din SORTBY-formel returnerar ett fel beror det troligen på någon av följande orsaker.

    Ogiltiga by_array-argument

    by_array argumenten måste vara en enda rad eller en enda kolumn och vara kompatibla i storlek med matris argumentet. Till exempel, om matris har 10 rader, by_array bör också innehålla 10 rader, annars uppstår ett fel #VALUE!

    Ogiltiga argument för sort_order

    sort_order kan bara vara 1 (stigande) eller -1 (fallande). Om inget värde anges är SORTBY standardmässigt i stigande ordning. Om något annat värde anges returneras ett #VALUE! fel.

    Det finns inte tillräckligt med utrymme för resultat

    Precis som alla andra dynamiska array-funktioner sprider SORTBY resultaten till ett automatiskt anpassningsbart och uppdaterbart område. Om det inte finns tillräckligt många tomma celler för att visa alla värden, visas ett #SPILL! fel.

    Källarbetsboken är stängd

    Om en SORTBY-formel refererar till en annan Excel-fil måste båda arbetsböckerna vara öppna. Om källarbetsboken är stängd uppstår ett #REF!-fel.

    Din Excel-version har inte stöd för dynamiska matriser.

    När funktionen SORT används i en pre-dynamisk version av Excel returnerar den felmeddelandet #NAME?

    Så här använder du SORTBY-funktionen i Excel för att göra anpassad sortering och andra saker. 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

    Excel SORTBY-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.