Excel SORTBY-funksjon - tilpasset sortering med formel

  • Dele Denne
Michael Brown

I dag skal vi se nærmere på syntaksen og typiske bruksområder for den nye dynamiske arrayen SORTBY-funksjonen. Du vil lære hvordan du tilpasser sortering i Excel med en formel, tilfeldig sortering av en liste, ordner celler etter tekstlengde og mer.

Microsoft Excel tilbyr en rekke måter å ordne tekstdata alfabetisk, datoer kronologisk, og tall fra minste til største eller fra høyeste til laveste. Det er også en måte å sortere etter dine egne tilpassede lister. I tillegg til den konvensjonelle sorteringsfunksjonen introduserer Excel 365 en helt ny måte å sortere data med formler på - veldig praktisk og utrolig enkel å bruke!

    Excel SORTBY-funksjon

    SORTBY-funksjonen i Excel er utformet for å sortere ett område eller en matrise basert på verdiene i et annet område eller matrise. Sortering kan gjøres etter én eller flere kolonner.

    SORTBY er en av seks nye dynamiske array-funksjoner tilgjengelig i Excel for Microsoft 365 og Excel 2021. Resultatet er en dynamisk array som overføres til naboceller og oppdateres automatisk når kildedataene endres.

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

    SORTBY(matrise, etter_matrise1, [sort_rekkefølge1], [etter_matrise2, sorteringsrekkefølge2] ,...)

    Array (obligatorisk) - celleområdet eller matrisen med verdier som skal sorteres.

    By_array1 (påkrevd) - området eller matrisen Å sortereetter.

    Sorteringsrekkefølge1 (valgfritt) - sorteringsrekkefølgen:

    • 1 eller utelatt (standard) - stigende
    • -1 - synkende

    By_array2 / Sort_order2 , … (valgfritt) - ekstra array / order-par som skal brukes for sortering.

    Viktig merknad! Foreløpig er SORTBY-funksjonen kun tilgjengelig med Microsoft 365-abonnementer og Excel 2021. I Excel 2019, Excel 2016 og tidligere versjoner er SORTBY-funksjonen ikke tilgjengelig.

    SORTBY-funksjonen - 4 ting å huske

    For at en Excel SORTBY-formel skal fungere riktig, er det noen viktige punkter du bør legge merke til:

    • By_array -argumenter bør enten være én rad høye eller én kolonne bred.
    • matrise og alle by_array -argumenter må ha kompatible dimensjoner. For eksempel, når du sorterer etter to kolonner, skal matrise , etter_matrise1 og etter_matrise2 ha samme antall rader; ellers vil en #VALUE-feil oppstå.
    • Hvis matrisen returnert av SORTBY er det endelige resultatet (utdata i en celle og ikke sendt til en annen funksjon), oppretter Excel et dynamisk spillområde og fyller det ut med resultatene. Så pass på at du har nok tomme celler nede og/eller til høyre for cellen der du skriver inn formelen, ellers får du en #SPILL-feil.
    • Resultatene av SORTBY-formler oppdateres automatisk hver gang endringer i kildedata. Men nye oppføringer som legges til utenformatrisen det refereres til i formelen er ikke inkludert i resultatene med mindre du oppdaterer matrise -referansen. For at den refererte matrisen skal utvides automatisk, konverter kildeområdet til en Excel-tabell eller opprett et dynamisk navngitt område.

    Grunnleggende SORTBY-formel i Excel

    Her er et typisk scenario for bruk av en SORTBY-formel i Excel:

    Anta at du har en liste over prosjekter med Verdi -feltet. Du ønsker å sortere prosjektene etter deres verdi på et eget ark. Siden andre brukere ikke trenger å se tallene, vil du helst ikke inkludere Verdi -kolonnen i resultatene.

    Oppgaven kan enkelt utføres med SORTBY-funksjonen, som du oppgi følgende argumenter:

    • Array er A2:A10 - siden du ikke ønsker at Verdi -kolonnen skal vises i resultatene, lar du den stå. ut av matrisen.
    • By_array1 er B2:B10 - sorter etter Verdi .
    • Sort_order1 er -1 - synkende, dvs. fra høyest til lavest.

    Setter vi sammen argumentene får vi denne formelen:

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

    For enkelhets skyld bruker vi formelen på det samme ark - skriv det inn i D2 og trykk på Enter-tasten. Resultatene "søler" automatisk til så mange celler som trengs (D2:D10 i vårt tilfelle). Men teknisk sett er formelen bare i den første cellen, og sletting av den fra D2 vil slette alle resultatene.

    Når den brukes på et annet ark, tar formelenfølgende form:

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

    Hvor Ark1 er regnearket som inneholder de originale dataene.

    Bruke SORTBY-funksjonen i Excel - formeleksempler

    Nedenfor finner du noen flere eksempler på bruk av SORTBY, som forhåpentligvis vil vise seg nyttig og innsiktsfull.

    Sorter etter flere kolonner

    Den grunnleggende formelen diskutert ovenfor sorterer data etter én kolonne. Men hva om du trenger å legge til ett sorteringsnivå til?

    Forutsatt at prøvetabellen vår har to felt, Status (kolonne B) og Verdi (kolonne C) , ønsker vi å sortere først etter Status alfabetisk, og deretter etter Verdi synkende.

    For å sortere etter to kolonner legger vi bare til ett par av by_array / sort_order arguments:

    • Array er A2:C10 - denne gangen ønsker vi å inkludere alle tre kolonnene i resultatene.
    • By_array1 er B2:B10 - først, sorter etter Status .
    • Sort_order1 er 1 - sorter alfabetisk fra A til Z.
    • By_array2 er C2:C10 - sorter deretter etter Verdi .
    • Sort_order2 er -1 - sorter fra største til minste.

    Som resultat får vi følgende formel:

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

    Som omorganiserer dataene våre nøyaktig slik vi instruerte dem:

    Tilpasset sortering i Excel med en formel

    For å sortere data i en egendefinert rekkefølge kan du enten bruke Excels egendefinerte sorteringsfunksjon eller bygge en SORTBY MATCH-formel på denne måten:

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

    Når du ser nærmere på datasettet vårt, vil du sannsynligvis finne det mer praktisk å sortere prosjektene etter status "logisk" , f.eks. etter viktighet, i stedet for alfabetisk.

    For å få det gjort, oppretter vi først en egendefinert liste i ønsket sorteringsrekkefølge ( Pågår , Fullført , På vent ) ved å skrive inn hver verdi i en separat celle i området E2:E4.

    Og så, ved å bruke den generiske formelen ovenfor, leverer vi kildeområdet for matrise (A2) :C10), Status -kolonnen for range_to_sort (B2:B10), og den egendefinerte listen som vi opprettet for custom_list (E2:E4).

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

    Som et resultat har vi fått prosjektene sortert etter status nøyaktig etter behov:

    For å sortere etter egendefinert liste i motsatt rekkefølge, sett -1 for sort_order1 argument:

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

    Og du vil få prosjektene sortert i motsatt retning:

    Vil du i tillegg sortere poster innenfor hver status? Ikke noe problem. Bare legg til ett sorteringsnivå til i formelen, si etter Verdi (C2:C10), og definer ønsket sorteringsrekkefølge, stigende i vårt tilfelle:

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

    En stor fordel med SORTBY-formelen i forhold til Excels egendefinerte sorteringsfunksjon er at formelen oppdateres automatisk når de opprinnelige dataene endres, mens funksjonen krever opprydding og omsortering med hver endring.

    Hvordan denne formelenfungerer:

    Som allerede nevnt, kan Excels SORTBY-funksjon bare behandle "sort etter"-matriser hvis dimensjoner er kompatible med kildematrisen. Siden vår kildematrise (C2:C10) inneholder 9 rader og den tilpassede listen (E2:E4) bare 3 rader, kan vi ikke levere den direkte til by_array -argumentet. I stedet bruker vi MATCH-funksjonen til å lage en 9-rads matrise:

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

    Her bruker vi Status -kolonnen (B2:B10) som oppslagsverdier og vår egendefinerte liste (E2:E5) som oppslagsmatrise. Det siste argumentet er satt til 0 for å se etter eksakte treff. Som et resultat får vi en matrise med 9 tall, som hver representerer den relative plasseringen til en gitt Status -verdi i den tilpassede listen:

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

    Denne matrisen går direkte til by_array -argumentet til SORTBY-funksjonen og tvinger den til å plassere dataene i rekkefølgen som tilsvarer elementene i matrisen, dvs. først oppføringer representert med 1-er, deretter oppføringer representert av 2-er, og så videre.

    Tilfeldig sortering i Excel med en formel

    I tidligere Excel-versjoner kan du gjøre en tilfeldig sortering med RAND-funksjonen som forklart i denne opplæringen: Hvordan tilfeldig sortere en liste i Excel.

    I nye Excel kan du bruke en kraftigere RANDARRAY-funksjon sammen med SORTBY:

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

    Hvor matrise er kildedataene du vil blande.

    Denne generiske formelen fungerer for en liste som består av enenkelt kolonne så vel som for et område med flere kolonner.

    For å sortere en liste tilfeldig i A2:A10, bruk for eksempel denne formelen:

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

    For å blande data i A2:C10 holder radene sammen, bruk denne:

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

    Hvordan denne formelen fungerer:

    RANDARRAY-funksjonen produserer en matrise av tilfeldige tall som skal brukes til sortering, og du sender det i by_array -argumentet til SORTBY. For å spesifisere hvor mange tilfeldige tall som skal genereres, teller du antall rader i kildeområdet ved å bruke ROWS-funksjonen, og "mater" dette tallet til rader -argumentet til RANDARRAY. Det var det!

    Merk. I likhet med forgjengeren er RANDARRAY en flyktig funksjon og den genererer en ny rekke tilfeldige tall hver gang regnearket beregnes på nytt. Som et resultat vil dataene dine bli brukt med hver endring på arket. For å forhindre automatisk resorting, kan du bruke funksjonen Lim inn spesielle > verdier for å erstatte formler med verdiene deres.

    Sorter celler etter strenglengde

    For å sortere celler etter lengden på tekststrengene de inneholder, bruk LEN-funksjonen til å telle antall tegn i hver celle, og oppgi de beregnede lengdene til by_array -argumentet til SORTBY. Argumentet sort_order kan settes til enten 1 eller -1, avhengig av foretrukket sorteringsrekkefølge.

    Slik sorterer du etter tekststreng fra minste til største:

    SORTBY(array, LEN(matrise), 1)

    For å sortere ettertekststreng fra størst til minste:

    SORTBY(matrise, LEN(matrise), -1)

    Og her er en formel som demonstrerer denne tilnærmingen på ekte data:

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

    Der A2:A7 er de originale cellene du ønsker å sortere etter tekstlengde i stigende rekkefølge:

    SORTBY vs. SORT

    I gruppen av nye dynamiske array-funksjoner i Excel, er det to designet for sortering. Nedenfor lister vi opp de viktigste forskjellene og likhetene, samt når hver er best å bruke.

    • I motsetning til SORT-funksjonen, krever ikke SORTBY at "sort by"-matrisen er en del av kilden array, og den trenger heller ikke vises i resultatene. Så når oppgaven din er å sortere et område basert på en annen uavhengig matrise eller en tilpasset liste, er SORTBY den riktige funksjonen å bruke. Hvis du ønsker å sortere et område basert på dets egne verdier, er SORT mer passende.
    • Begge funksjonene støtter flere sorteringsnivåer, og begge kan lenkes sammen med andre dynamiske array-funksjoner og konvensjonelle funksjoner.
    • Begge funksjonene er kun tilgjengelige for Excel 365- og Excel 2021-brukere.

    Excel SORTBY-funksjonen fungerer ikke

    Hvis SORTBY-formelen returnerer en feil, er det mest sannsynlig pga. en av følgende årsaker.

    Ugyldige by_array-argumenter

    by_array -argumentene må være en enkelt rad eller en enkelt kolonne og være kompatible i størrelse med arrayen argument. For eksempel, hvis matrise har 10rader, by_array bør også inkludere 10 rader. Ellers en #VERDI! feil oppstår.

    Ugyldige sorteringsrekkefølge-argumenter

    sorteringsrekkefølge -argumentene kan bare være 1 (stigende) eller -1 (synkende). Hvis ingen verdi er angitt, er SORTBY standard i stigende rekkefølge. Hvis en annen verdi er angitt, en #VALUE! feilen returneres.

    Det er ikke nok plass til resultater

    Som alle andre dynamiske array-funksjoner, overfører SORTBY resultatene til et område som kan endres automatisk og oppdateres. Hvis det ikke er nok tomme celler til å vise alle verdier, vises en #SPILL! feil blir kastet.

    Kildearbeidsboken er lukket

    Hvis en SORTBY-formel refererer til en annen Excel-fil, må begge arbeidsbøkene være åpne. Hvis kildearbeidsboken er lukket, vises en #REF! feil oppstår.

    Excel-versjonen din støtter ikke dynamiske arrays

    Når den brukes i en pre-dynamisk versjon av Excel, returnerer SORT-funksjonen #NAME? feil.

    Det er hvordan du bruker SORTBY-funksjonen i Excel til å gjøre tilpasset sortering og andre ting. Jeg takker for at du leser og håper å se deg på bloggen vår neste uke!

    Øvningsarbeidsbok for nedlasting

    Excel SORTBY-formler (.xlsx-fil)

    Michael Brown er en dedikert teknologientusiast med en lidenskap for å forenkle komplekse prosesser ved hjelp av programvareverktøy. Med mer enn ti års erfaring i teknologibransjen, har han forbedret ferdighetene sine i Microsoft Excel og Outlook, samt Google Sheets og Docs. Michaels blogg er dedikert til å dele sin kunnskap og ekspertise med andre, og gir enkle å følge tips og veiledninger for å forbedre produktivitet og effektivitet. Enten du er en erfaren profesjonell eller nybegynner, tilbyr Michaels blogg verdifull innsikt og praktiske råd for å få mest mulig ut av disse viktige programvareverktøyene.