Excel SORTBY-funktion - brugerdefineret sortering med formel

  • Del Dette
Michael Brown

I dag ser vi nærmere på syntaksen og de typiske anvendelser af den nye dynamiske arrayfunktion SORTBY. Du lærer, hvordan du brugerdefinerede sorterer i Excel med en formel, tilfældigt sorterer en liste, ordner celler efter tekstlængde og meget mere.

Microsoft Excel tilbyder en række måder at sortere tekstdata alfabetisk, datoer kronologisk og tal fra den mindste til den største eller fra den højeste til den laveste. Der er også mulighed for at sortere efter dine egne brugerdefinerede lister. Ud over den konventionelle sorteringsfunktionalitet introducerer Excel 365 en helt ny måde at sortere data med formler på - meget praktisk og utrolig enkel at bruge!

    Excel SORTBY-funktionen

    Funktionen SORTBY i Excel er beregnet til at sortere et område eller et array på baggrund af værdierne i et andet område eller array. Sortering kan ske efter en eller flere kolonner.

    SORTBY er en af seks nye dynamiske array-funktioner, der er tilgængelige i Excel til Microsoft 365 og Excel 2021. Resultatet er et dynamisk array, der spreder sig til nabocellerne og opdateres automatisk, når kildedataene ændres.

    SORTBY-funktionen har et variabelt antal argumenter - de to første er obligatoriske og de andre er valgfrie:

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

    Array (påkrævet) - det område af celler eller array af værdier, der skal sorteres.

    By_array1 (påkrævet) - det område eller array, der skal sorteres efter.

    Sort_order1 (valgfrit) - sorteringsrækkefølgen:

    • 1 eller udeladt (standard) - opstigende
    • -1 - faldende

    By_array2 / Sort_order2 , ... (valgfrit) - yderligere array/ordrepar, der skal bruges til sortering.

    Vigtig bemærkning! I øjeblikket er SORTBY-funktionen kun tilgængelig med Microsoft 365-abonnementer og Excel 2021. I Excel 2019, Excel 2016 og tidligere versioner er SORTBY-funktionen ikke tilgængelig.

    SORTBY-funktionen - 4 ting, du skal huske

    For at en Excel SORTBY-formel kan fungere korrekt, er der et par vigtige punkter, som du skal være opmærksom på:

    • By_array argumenterne skal være enten én række høj eller én kolonne bred.
    • array og alle by_array skal have kompatible dimensioner, f.eks. ved sortering efter to kolonner, array , by_array1 og by_array2 skal have det samme antal rækker; ellers opstår der en #VALUE-fejl.
    • Hvis det array, der returneres af SORTBY, er det endelige resultat (output i en celle og ikke videregivet til en anden funktion), opretter Excel et dynamisk spill-område og fylder det med resultaterne. Så sørg for at have nok tomme celler nede og/eller til højre for den celle, hvor du indtaster formlen, ellers får du en #SPILL-fejl.
    • Resultaterne af SORTBY-formler opdateres automatisk, når kildedataene ændres. Men nye poster, der tilføjes uden for det array, der refereres til i formlen, medtages ikke i resultaterne, medmindre du opdaterer array reference. For at det refererede array skal udvides automatisk, skal kildeområdet konverteres til en Excel-tabelle eller oprettes et dynamisk navngivet område.

    Grundlæggende SORTBY-formel i Excel

    Her er et typisk scenarie for brug af en SORTBY-formel i Excel:

    Antag, at du har en liste over projekter med Værdi feltet. Du ønsker at sortere projekterne efter deres værdi på et separat ark. Da andre brugere ikke har brug for at se tallene, vil du helst ikke medtage Værdi kolonnen i resultaterne.

    Opgaven kan nemt udføres med funktionen SORTBY, som du skal angive følgende argumenter:

    • Array er A2:A10 - da du ikke ønsker, at den Værdi kolonne, der skal vises i resultaterne, udelader du den fra arrayet.
    • By_array1 er B2:B10 - sortering efter Værdi .
    • Sort_order1 er -1 - faldende, dvs. fra højeste til laveste.

    Når vi lægger argumenterne sammen, får vi denne formel:

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

    For nemheds skyld bruger vi formlen på samme ark - indtast den i D2 og tryk på Enter-tasten. Resultaterne "spildes" automatisk til så mange celler som nødvendigt (D2:D10 i vores tilfælde). Men teknisk set er formlen kun i den første celle, og hvis du sletter den fra D2, slettes alle resultaterne.

    Når formlen bruges på et andet ark, får den følgende formular følgende form:

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

    Hvor Ark1 er det regneark, der indeholder de oprindelige data.

    Brug af SORTBY-funktionen i Excel - eksempler på formler

    Nedenfor finder du nogle flere eksempler på brugen af SORTBY, som forhåbentlig vil vise sig at være nyttige og indsigtsfulde.

    Sortere efter flere kolonner

    Den grundlæggende formel, der er beskrevet ovenfor, sorterer data efter én kolonne. Men hvad hvis du har brug for at tilføje endnu et sorteringsniveau?

    Hvis vi antager, at vores eksempeltabel har to felter, Status (kolonne B) og Værdi (kolonne C) , vi ønsker at sortere først efter Status alfabetisk, og derefter efter Værdi faldende.

    For at sortere efter to kolonner skal vi blot tilføje endnu et par af by_array / sort_order argumenter:

    • Array er A2:C10 - denne gang ønsker vi at inkludere alle tre kolonner i resultaterne.
    • By_array1 er B2:B10 - først, sorteres efter Status .
    • Sort_order1 er 1 - sortere alfabetisk fra A til Z.
    • By_array2 er C2:C10 - så sorteres efter Værdi .
    • Sort_order2 er -1 - sortere fra størst til mindst.

    Som resultat får vi følgende formel:

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

    Hvilket omarrangerer vores data nøjagtigt som vi har instrueret det:

    Brugerdefineret sortering i Excel med en formel

    Hvis du vil sortere data i en brugerdefineret rækkefølge, kan du enten bruge Excels funktion Tilpasset sortering eller opbygge en SORTBY MATCH-formel på denne måde:

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

    Når du ser nærmere på vores datasæt, vil du sandsynligvis finde det mere praktisk at sortere projekterne efter deres status "logisk", f.eks. efter vigtighed, end alfabetisk.

    For at få det gjort, opretter vi først en brugerdefineret liste i den ønskede sorteringsrækkefølge ( I gang , Færdiggjort , I venteposition ) ved at skrive hver værdi i en separat celle i intervallet E2:E4.

    Og derefter leverer vi ved hjælp af den generiske formel ovenfor kildeområdet for array (A2:C10), den Status for range_to_sort (B2:B10), og den brugerdefinerede liste, som vi har oprettet for custom_list (E2:E4).

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

    Resultatet er, at vi har fået projekterne sorteret efter deres status, præcis som det er nødvendigt:

    Hvis du vil sortere efter brugerdefineret liste i omvendt rækkefølge, skal du indsætte -1 for sort_order1 argument:

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

    Og du vil få projekterne sorteret i den modsatte retning:

    Vil du desuden sortere poster inden for hver status? Intet problem. Du skal blot tilføje endnu et sorteringsniveau til formlen, f.eks. efter Værdi (C2:C10), og definer den ønskede sorteringsrækkefølge, i vores tilfælde opadgående:

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

    En stor fordel ved SORTBY-formlen i forhold til Excels funktion Tilpasset sortering er, at formlen opdateres automatisk, når de oprindelige data ændres, mens funktionen kræver oprydning og omsortering ved hver ændring.

    Sådan fungerer denne formel:

    Som allerede nævnt kan Excels SORTBY-funktion kun behandle "sortere efter"-arrays, hvis dimensioner er kompatible med kildematrixen. Da vores kildematrix (C2:C10) indeholder 9 rækker og den brugerdefinerede liste (E2:E4) kun 3 rækker, kan vi ikke levere den direkte til by_array I stedet bruger vi MATCH-funktionen til at oprette et array med 9 rækker:

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

    Her bruger vi den Status kolonne (B2:B10) som opslagsværdier og vores brugerdefinerede liste (E2:E5) som opslagsarray. Det sidste argument sættes til 0 for at søge efter nøjagtige match. Som resultat får vi et array med 9 tal, der hver repræsenterer den relative position for en given Status værdi i den brugerdefinerede liste:

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

    Dette array går direkte til by_array argumentet for SORTBY-funktionen og tvinger den til at placere dataene i den rækkefølge, der svarer til arrayets elementer, dvs. først poster repræsenteret ved 1'er, derefter poster repræsenteret ved 2'er osv.

    Tilfældig sortering i Excel med en formel

    I tidligere Excel-versioner kan du foretage en tilfældig sortering med RAND-funktionen som forklaret i denne vejledning: Sådan sorterer du en liste tilfældigt i Excel.

    I det nye Excel kan du bruge en mere kraftfuld RANDARRAY-funktion sammen med SORTBY:

    SORTBY( array , RANDARRAY(ROWS( array )))

    Hvor array er de kildedata, som du ønsker at blande.

    Denne generiske formel fungerer både for en liste, der består af en enkelt kolonne, og for et område med flere kolonner.

    Hvis du f.eks. vil sortere en liste tilfældigt i A2:A10, skal du bruge denne formel:

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

    Hvis du vil blande data i A2:C10 og holde rækkerne samlet, skal du bruge denne:

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

    Sådan fungerer denne formel:

    Funktionen RANDARRAY producerer et array af tilfældige tal, der skal bruges til sortering, og du sender det i by_array argumentet i SORTBY. For at angive, hvor mange tilfældige tal der skal genereres, tæller du antallet af rækker i kildeområdet ved hjælp af ROWS-funktionen og "fodrer" dette tal til rækker argument for RANDARRAY. Det er det!

    Bemærk. Ligesom sin forgænger er RANDARRAY en flygtig funktion, og den genererer et nyt array af tilfældige tal, hver gang regnearket genberegnes. Som følge heraf vil dine data blive sorteret ved hver ændring i arket. For at forhindre automatisk sortering kan du bruge Indsæt specielt > Værdier funktionen til at erstatte formler med deres værdier.

    Sortere celler efter strengens længde

    Hvis du vil sortere celler efter længden af de tekststrenge, de indeholder, skal du bruge LEN-funktionen til at tælle antallet af tegn i hver celle og angive de beregnede længder til funktionen by_array argumentet i SORTBY. sort_order argumentet kan sættes til enten 1 eller -1, afhængigt af den foretrukne sorteringsrækkefølge.

    Sådan sorteres en tekststreng fra den mindste til den største:

    SORTBY(array, LEN(array), 1)

    Sådan sorteres en tekststreng fra den største til den mindste:

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

    Og her er en formel, der viser denne fremgangsmåde på virkelige data:

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

    Hvor A2:A7 er de originale celler, som du vil sortere efter tekstlængde i stigende orden:

    SORTBY vs. SORT

    I gruppen af nye dynamiske array-funktioner i Excel er der to funktioner, der er beregnet til sortering. Nedenfor er der en liste over de vigtigste forskelle og ligheder, og hvornår de hver især er bedst at bruge.

    • I modsætning til SORT-funktionen kræver SORTBY ikke, at arrayet "sortér efter" er en del af kildematrixen, og det behøver heller ikke at fremgå af resultaterne. Så når din opgave er at sortere et område baseret på et andet uafhængigt array eller en brugerdefineret liste, er SORTBY den rigtige funktion at bruge. Hvis du ønsker at sortere et område baseret på dets egne værdier, er SORT mere passende.
    • Begge funktioner understøtter flere sorteringsniveauer, og begge funktioner kan kædes sammen med andre dynamiske array- og konventionelle funktioner.
    • Begge funktioner er kun tilgængelige for Excel 365- og Excel 2021-brugere.

    Excel SORTBY-funktionen fungerer ikke

    Hvis din SORTBY-formel returnerer en fejl, skyldes det højst sandsynligt en af følgende årsager.

    Ugyldige by_array-argumenter

    by_array skal være en enkelt række eller en enkelt kolonne og skal være af en størrelse, der er kompatibel med den array argument. Hvis f.eks. array har 10 rækker, by_array bør også omfatte 10 rækker, ellers opstår der en #VALUE! fejl.

    Ugyldige sort_order-argumenter

    sort_order kan kun være 1 (stigende) eller -1 (faldende). Hvis der ikke er angivet nogen værdi, er SORTBY standardmæssigt i stigende rækkefølge. Hvis der er angivet en anden værdi, returneres en #VALUE! fejl.

    Der er ikke nok plads til resultater

    Som enhver anden dynamisk array-funktion spreder SORTBY resultaterne i et område, der automatisk kan ændres i størrelse og opdateres. Hvis der ikke er nok tomme celler til at vise alle værdierne, vises en #SPILL!-fejl.

    Kildearbejdsmappen er lukket

    Hvis en SORTBY-formel refererer til en anden Excel-fil, skal begge regneark være åbne. Hvis kildearbejdsmappen er lukket, opstår der en #REF!-fejl.

    Din Excel-version understøtter ikke dynamiske arrays

    Når funktionen SORT bruges i en præ-dynamisk version af Excel, returnerer funktionen #NAME? en fejl.

    Sådan bruger du funktionen SORTBY i Excel til at foretage brugerdefineret sortering og andre ting. Tak for din læsning, og jeg håber at se dig på vores blog i næste uge!

    Arbejdsbog til download

    Excel SORTBY-formler (.xlsx-fil)

    Michael Brown er en dedikeret teknologientusiast med en passion for at forenkle komplekse processer ved hjælp af softwareværktøjer. Med mere end ti års erfaring i teknologibranchen har han finpudset sine færdigheder i Microsoft Excel og Outlook samt Google Sheets og Docs. Michaels blog er dedikeret til at dele sin viden og ekspertise med andre og giver nemme at følge tips og vejledninger til at forbedre produktiviteten og effektiviteten. Uanset om du er en erfaren professionel eller nybegynder, tilbyder Michaels blog værdifuld indsigt og praktiske råd til at få mest muligt ud af disse vigtige softwareværktøjer.