Excel SORT-funktion - automatisk sortering af data ved hjælp af formel

  • Del Dette
Michael Brown

I denne vejledning vises det, hvordan du bruger funktionen SORT til dynamisk sortering af datamatricer. Du lærer en formel til at sortere alfabetisk i Excel, ordne tal i stigende eller faldende rækkefølge, sortere efter flere kolonner og meget mere.

Sorteringsfunktionen har eksisteret længe, men med indførelsen af dynamiske arrays i Excel 365 er der kommet en utrolig enkel måde at sortere med formler på. Det smarte ved denne metode er, at resultaterne opdateres automatisk, når kildedataene ændres.

    Excel SORT-funktion

    Funktionen Sortere i Excel sorterer indholdet af et array eller et område efter kolonner eller rækker i stigende eller faldende rækkefølge.

    SORT hører til gruppen af dynamiske array-funktioner. Resultatet er et dynamisk array, der automatisk spredes vertikalt eller horisontalt til nabocellerne, afhængigt af formen på kildematrixen.

    Syntaksen for SORT-funktionen er som følger:

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

    Hvor:

    Array (påkrævet) - er et array af værdier eller et område af celler, der skal sorteres. Det kan være alle værdier, herunder tekst, tal, datoer, tidspunkter osv.

    Sort_index (valgfrit) - et heltal, der angiver, hvilken kolonne eller række der skal sorteres efter. Hvis det udelades, anvendes standardindeks 1.

    Sort_order (valgfri) - definerer sorteringsrækkefølgen:

    • 1 eller udeladt (standard) - stigende rækkefølge, dvs. fra den mindste til den største
    • -1 - faldende rækkefølge, dvs. fra den største til den mindste

    By_col (valgfrit) - en logisk værdi, der angiver retningen for sortering:

    • FALSE eller udeladt (standard) - sorterer efter række. Du vil bruge denne indstilling oftest.
    • TRUE - sortering efter kolonne. Brug denne indstilling, hvis dine data er organiseret horisontalt i kolonner som i dette eksempel.

    Excel SORT-funktion - tips og noter

    SORT er en ny dynamisk array-funktion, og som sådan har den et par særlige kendetegn, som du bør være opmærksom på:

    • I øjeblikket er SORT-funktionen kun tilgængelig i Microsoft 365 og Excel 2021. Excel 2019 og Excel 2016 understøtter ikke dynamiske array-formler, så SORT-funktionen er ikke tilgængelig i disse versioner.
    • Hvis det array, der returneres af en SORT-formel, er det endelige resultat (dvs. ikke overført til en anden funktion), opretter Excel dynamisk et område af passende størrelse og fylder det med de sorterede værdier. Sørg derfor for, at du altid har nok tomme celler nede og/eller til højre for den celle, hvor du indtaster formlen, ellers opstår der en #SPILL-fejl.
    • Resultaterne opdateres dynamisk, efterhånden som kildedataene ændres. array der leveres til formlen ikke automatisk til at omfatte nye poster, der tilføjes uden for den refererede array Hvis du vil medtage sådanne elementer, skal du enten opdatere array reference i din formel, eller konverter kildeområdet til en tabel som vist i dette eksempel, eller opret et dynamisk navngivet område.

    Grundlæggende Excel SORT-formel

    Dette eksempel viser en grundlæggende formel til at sortere data i Excel i stigende og faldende rækkefølge.

    Antag, at dine data er ordnet alfabetisk som vist i skærmbilledet nedenfor. Du ønsker at sortere tallene i kolonne B uden at bryde eller blande data.

    Formel til at sortere i stigende rækkefølge

    Hvis du vil sortere værdierne i kolonne B fra den mindste til den største, skal du bruge følgende formel:

    =SORT(A2:B8, 2, 1)

    Hvor:

    • A2:B8 er kildefeltet
    • 2 er det kolonnenummer, der skal sorteres efter
    • 1 er den stigende sorteringsrækkefølge

    Da vores data er organiseret i rækker, kan det sidste argument udelades for at få standardværdien FALSE - sortering efter rækker.

    Du skal blot indtaste formlen i en tom celle (D2 i vores tilfælde), trykke på Enter , og resultatet vil automatisk blive overført til D2:E8.

    Formel til at sortere i faldende rækkefølge

    Hvis du vil sortere data nedadgående, dvs. fra størst til mindst, skal du indstille sort_order argumentet til -1 på følgende måde:

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

    Indtast formlen i den øverste venstre celle i destinationsområdet, og du vil få dette resultat:

    På samme måde kan du sortere tekstværdier i alfabetisk rækkefølge fra A til Z eller fra Z til A.

    Sådan sorteres data i Excel ved hjælp af formel

    Nedenstående eksempler viser et par typiske anvendelser af SORT-funktionen i Excel og et par andre ikke-trivielle anvendelser.

    Excel Sortere efter kolonne

    Når du sorterer data i Excel, ændrer du for det meste rækkefølgen af rækker. Men når dine data er organiseret horisontalt med rækker, der indeholder etiketter, og kolonner, der indeholder poster, kan du have brug for at sortere fra venstre mod højre i stedet for fra top til bund.

    Hvis du vil sortere efter kolonne i Excel, skal du indstille by_col argumentet til TRUE. I dette tilfælde, sort_index repræsenterer en række, ikke en kolonne.

    Hvis du f.eks. vil sortere nedenstående data efter antal fra højeste til laveste antal, skal du bruge denne formel:

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

    Hvor:

    • B1:H2 er de kildedata, der skal sorteres
    • 2 er sorteringsindekset, da vi sorterer tallene i anden række
    • -1 angiver den faldende sorteringsrækkefølge
    • TRUE betyder, at kolonnerne skal sorteres, ikke rækker

    Sortere efter flere kolonner i forskellig rækkefølge (sortering på flere niveauer)

    Når du arbejder med komplekse datamodeller, kan du ofte have brug for en sortering på flere niveauer. Kan det gøres med en formel? Ja, det er nemt! Du skal blot angive arraykonstanter for sort_index og sort_order argumenter.

    Hvis du f.eks. vil sortere nedenstående data først efter Region (kolonne A) fra A til Z, og derefter ved Antal . (kolonne C) fra den mindste til den største og med følgende argumenter:

    • Array er dataene i A2:C13.
    • Sort_index er arraykonstanten {1,3}, da vi først sorterer efter Region (1. kolonne), og derefter med Antal . (3. kolonne).
    • Sort_order er arraykonstanten {1,-1}, da den første kolonne skal sorteres i stigende rækkefølge og den tredje kolonne i faldende rækkefølge.
    • By_col er udeladt, fordi vi sorterer rækker, hvilket er standard.

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

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

    Tekstværdierne i den første kolonne er sorteret alfabetisk og tallene i den tredje kolonne fra størst til mindst:

    Sortere og filtrere i Excel

    Hvis du ønsker at filtrere data med nogle kriterier og ordne output i rækkefølge, skal du bruge SORT- og FILTER-funktionerne sammen:

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

    Funktionen FILTER henter et array af værdier baseret på de kriterier, du definerer, og sender dette array til det første argument for SORT.

    Det bedste ved denne formel er, at den også udsender resultaterne som et dynamisk spill-område, uden at du behøver at trykke på Ctrl + Shift + Enter eller gætte på, hvor mange celler du skal kopiere den til. Som sædvanlig skriver du en formel i den øverste celle og trykker på Enter-tasten.

    Som et eksempel vil vi udtrække varer med en mængde på 30 eller derover (>=30) fra kildedataene i A2:B9 og arrangere resultaterne i stigende orden.

    Til dette formål opstiller vi først betingelsen, f.eks. i celle E2 som vist i billedet nedenfor. Derefter opbygger vi vores Excel SORT-formel på denne måde:

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

    Bortset fra array genereret af FILTER-funktionen, angiver vi kun den sort_index De resterende to argumenter er udeladt, fordi standardindstillingerne fungerer præcis som vi har brug for (opadgående sortering, efter række).

    Få N største eller mindste værdier og sortere resultaterne

    Når man analyserer store mængder information, er der ofte behov for at udtrække et vist antal topværdier. Måske ikke bare udtrække, men også arrangere dem i den ønskede rækkefølge. Og ideelt set vælge hvilke kolonner der skal indgå i resultaterne. Lyder det svært? Ikke med de nye dynamiske array-funktioner!

    Her er en generisk formel:

    INDEX(SORT(...), SEQUENCE( n ), { kolonne1_til_returnering , kolonne2_til_returnering , ...})

    Hvor n er nummeret på de værdier, du ønsker at returnere.

    Antag, at du vil have en top 3-liste ud fra nedenstående datasæt baseret på tallene i kolonne C.

    For at få det gjort, skal du først sortere arrayet A2:C13 efter den tredje kolonne i faldende rækkefølge:

    SORT(A2:C13, 3, -1)

    Derefter indsættes ovenstående formel i den første ( array ) argumentet i INDEX-funktionen for at få arrayet sorteret fra højeste til laveste.

    For den anden ( row_num ), som angiver, hvor mange rækker der skal returneres, genereres de nødvendige sekventielle tal ved hjælp af SEQUENCE-funktionen. Da vi har brug for 3 topværdier, bruger vi SEQUENCE(3), hvilket er det samme som at angive en vertikal arraykonstant {1;2;3} direkte i formlen.

    For det tredje ( col_num ), som definerer, hvor mange kolonner der skal returneres, skal du angive kolonnenumrene i form af en vandret arraykonstant. Vi ønsker at returnere kolonne B og C, så vi bruger arrayet {2,3}.

    Til sidst får vi følgende formel:

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

    Og det giver præcis de resultater, vi ønsker:

    For at vende tilbage 3 nederste værdier, skal du blot sortere de oprindelige data fra den mindste til den største. For at gøre dette skal du ændre sort_order argumentet fra -1 til 1:

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

    Returnerer en sorteret værdi i en bestemt position

    Hvis du ser det fra en anden vinkel, hvad så hvis du kun vil returnere en specifik sorteringsposition? Lad os sige, kun den første, kun den anden eller kun den tredje post fra den sorterede liste? Du kan gøre det ved at bruge den forenklede version af INDEX SORT-formlen, som vi har diskuteret ovenfor:

    INDEX(SORT(...), n , { kolonne1_til_returnering , kolonne2_til_returnering , ...})

    Hvor n er den position, der er af interesse.

    Hvis du f.eks. vil få en bestemt position fra toppen (dvs. fra data sorteret i faldende rækkefølge), skal du bruge denne formel:

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

    Hvis du vil have en bestemt position fra bunden (dvs. fra data sorteret opadgående), skal du bruge denne:

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

    Hvor A2:C13 er kildedata, F1 er positionen fra toppen, I1 er positionen fra bunden, og {2,3} er de kolonner, der skal returneres.

    Brug Excel-tabellen til at få sorteringsmatrixen til at ekspandere automatisk

    Som du allerede ved, opdateres det sorterede array automatisk, når du foretager ændringer i de oprindelige data. Dette er standardadfærden for alle dynamiske array-funktioner, herunder SORT. Når du tilføjer nye poster uden for det refererede array, medtages de imidlertid ikke automatisk i en formel. Hvis du vil have din formel til at reagere på sådanne ændringer, skal du konvertere kildeområdet til et fuldt ud-funktionelle Excel-tabeller og bruge strukturerede referencer i din formel.

    For at se, hvordan det fungerer i praksis, kan du se på følgende eksempel.

    Hvis du bruger nedenstående Excel SORT-formel til at ordne værdierne i intervallet A2:B8 i alfabetisk rækkefølge:

    =SORT(A2:B8, 1, 1)

    Derefter indtaster du en ny post i række 9... og bliver skuffet over at se, at den nyligt tilføjede post ikke er med i spildområdet:

    Nu skal du konvertere kildeområdet til en tabel. Du skal blot vælge dit område inklusive kolonneoverskrifterne (A1:B8) og trykke på Ctrl + T . Når du opbygger din formel, skal du vælge kildeområdet med musen, og tabellens navn indsættes automatisk i formlen (dette kaldes en struktureret reference):

    =SORT(Tabel1, 1, 1, 1)

    Når du skriver en ny post lige under den sidste række, udvides tabellen automatisk, og de nye data medtages i SORT-formlens spildområde:

    Excel SORT-funktionen fungerer ikke

    Hvis din SORT-formel resulterer i en fejl, skyldes det højst sandsynligt følgende årsager.

    #NAME fejl: ældre Excel-version

    SORT er en ny funktion og fungerer kun i Excel 365 og Excel 2021. I ældre versioner, hvor denne funktion ikke understøttes, opstår der en #NAME? fejl.

    #SPILL fejl: noget blokerer for spildområdet

    Hvis en eller flere celler i spildområdet ikke er helt tomme eller slået sammen, vises en #SPILL! fejl. For at rette den skal du blot fjerne blokaden. Du kan finde flere oplysninger i Excel #SPILL! fejl - hvad den betyder, og hvordan du retter den.

    #VALUE fejl: ugyldige argumenter

    Når du støder på en #VALUE! fejl, skal du kontrollere sort_index og sort_order argumenter. Sort_index bør ikke overstige det antal kolonner, der er array , og sort_order skal være enten 1 (stigende) eller -1 (faldende).

    #REF-fejl: kildearbejdsbog er lukket

    Da dynamiske arrays kun i begrænset omfang understøtter referencer mellem arbejdsbøger, kræver funktionen Sortere, at begge filer er åbne. Hvis kildearbejdsbogen er lukket, vil en formel give en #REF!-fejl. Du kan rette problemet ved at åbne den fil, der henvises til.

    Sådan sorterer du data i Excel ved hjælp af formler. Jeg takker for din læsning og håber at se dig på vores blog i næste uge!

    Arbejdsbog til download

    Sortering i Excel med 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.