Konverter kolonne / række til array i Excel: WRAPCOLS & WRAPROWS funktioner

  • Del Dette
Michael Brown

Den hurtigste måde at omdanne en kolonne eller række af værdier til et todimensionelt array er ved hjælp af WRAPCOLS eller WRAPROWS-funktionen.

Siden Excel's tidligste dage har det været meget godt til at beregne og analysere tal. Men det har traditionelt været en udfordring at manipulere arrays. Indførelsen af dynamiske arrays gjorde brugen af arrayformler meget nemmere. Og nu frigiver Microsoft et sæt nye dynamiske array-funktioner til at manipulere og omforme arrays. I denne vejledning lærer du, hvordan du bruger to sådanne funktioner,WRAPCOLS og WRAPROWS for at omdanne en kolonne eller række til et 2D-array på ingen tid.

    Excel WRAPCOLS-funktionen

    Funktionen WRAPCOLS i Excel omdanner en række eller kolonne af værdier til et todimensionelt array baseret på det angivne antal værdier pr. række.

    Syntaksen har følgende argumenter:

    WRAPCOLS(vektor, wrap_count, [pad_with])

    Hvor:

    • vektor (påkrævet) - det endimensionale array eller område, som er kilden.
    • wrap_count (påkrævet) - det maksimale antal værdier pr. kolonne.
    • pad_with (valgfrit) - den værdi, der skal udfyldes i den sidste kolonne, hvis der ikke er tilstrækkeligt mange elementer til at udfylde den. Hvis den udelades, udfyldes de manglende værdier med #N/A (standard).

    Hvis du f.eks. vil ændre området B5:B24 til et 2-dimensionelt array med 5 værdier pr. kolonne, er formlen:

    =WRAPROWS(B5:B24, 5)

    Du indtaster formlen i en hvilken som helst celle, og den bliver automatisk spredt ud i så mange celler som nødvendigt. I WRAPCOLS-uddatoen er værdierne arrangeret lodret fra top til bund, baseret på wrap_count Når tallet er nået, startes en ny kolonne.

    Excel WRAPROWS-funktionen

    Funktionen WRAPROWS i Excel konverterer en række eller kolonne af værdier til et todimensionelt array baseret på det antal værdier pr. række, som du angiver.

    Syntaksen er som følger:

    WRAPROWS(vektor, wrap_count, [pad_with])

    Hvor:

    • vektor (påkrævet) - det endimensionale array eller område, som er kilden.
    • wrap_count (påkrævet) - det maksimale antal værdier pr. række.
    • pad_with (valgfrit) - den værdi, der skal udfyldes med den sidste række, hvis der ikke er tilstrækkeligt mange elementer til at fylde den. Standardværdien er #N/A.

    For at omdanne området B5:B24 til et 2D-array med 5 værdier i hver række er formlen f.eks:

    =WRAPROWS(B5:B24, 5)

    Du indtaster formlen i den øverste venstre celle i spildområdet, og den udfylder automatisk alle andre celler. Funktionen WRAPROWS arrangerer værdierne horisontalt fra venstre mod højre på grundlag af wrap_count Når tallet er nået, starter den en ny række.

    Tilgængelighed af WRAPCOLS og WRAPROWS

    Begge funktioner er kun tilgængelige i Excel til Microsoft 365 (Windows og Mac) og Excel til internettet.

    I tidligere versioner kan du bruge traditionelle, mere komplekse formler til at udføre transformationer fra kolonne til array og fra række til array. Længere fremme i denne vejledning vil vi diskutere de alternative løsninger i detaljer.

    Tip. Hvis du vil udføre en omvendt operation, dvs. ændre et 2D-array til en enkelt kolonne eller række, skal du bruge henholdsvis funktionen TOCOL eller TOROW.

    Sådan konverteres kolonne / række til område i Excel - eksempler

    Nu hvor du har fået en forståelse for den grundlæggende brug, kan vi se nærmere på nogle mere specifikke tilfælde.

    Indstil det maksimale antal værdier pr. kolonne eller række

    Afhængigt af strukturen af dine oprindelige data kan du finde det passende at omarrangere dem i kolonner (WRAPCOLS) eller rækker (WRAPROWS). Uanset hvilken funktion du bruger, er det den wrap_count argument, der bestemmer det maksimale antal værdier i hver kolonne/række.

    Hvis du f.eks. vil omdanne området B4:B23 til et 2D-array, så hver kolonne har højst 10 værdier, skal du bruge denne formel:

    =WRAPCOLS(B4:B23, 10)

    For at omarrangere det samme område efter række, så hver række har højst 4 værdier, er formlen:

    =WRAPROWS(B4:B23, 4)

    Billedet nedenfor viser, hvordan det ser ud:

    Udfyld manglende værdier i det resulterende array

    Hvis der ikke er nok værdier til at fylde alle kolonnerne/rækkerne i det resulterende område, returnerer WRAPROWS og WRAPCOLS #N/A-fejl for at bevare strukturen i 2D-arrayet.

    Hvis du vil ændre standardadfærden, kan du angive en brugerdefineret værdi for den valgfrie pad_with argument.

    Hvis du f.eks. vil omdanne området B4:B21 til et 2D-array med højst 5 værdier i bredden og udfylde den sidste række med streger, hvis der ikke er nok data til at fylde den, skal du bruge denne formel:

    =WRAPROWS(B4:B21, 5, "-")

    For at erstatte de manglende værdier med strenge af nul længde (blanktegn) er formlen:

    =WRAPROWS(B4:B21, 5, "")

    Sammenlign venligst resultaterne med standardadfærden (formlen i D5), hvor pad_with er udeladt:

    Flette flere rækker til et 2D-område

    Hvis du vil kombinere et par separate rækker til et enkelt 2D-array, skal du først stable rækkerne horisontalt ved hjælp af funktionen HSTACK og derefter ombryde værdierne ved hjælp af WRAPROWS eller WRAPCOLS.

    For eksempel, for at flette værdierne fra 3 rækker (B5:J5, B7:G7 og B9:F9) og pakke dem ind i kolonner, der hver indeholder 10 værdier, er formlen:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Hvis du vil kombinere værdier fra flere rækker i et 2D-område, hvor hver række indeholder 5 værdier, skal formlen have denne form:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    Kombiner flere kolonner til et 2D-array

    Hvis du vil samle flere kolonner i et 2D-område, skal du først stable dem vertikalt ved hjælp af VSTACK-funktionen og derefter pakke værdierne ind i rækker (WRAPROWS) eller kolonner (WRAPCOLS).

    Hvis du f.eks. vil kombinere værdierne fra 3 kolonner (B5:J5, B7:G7 og B9:F9) til et 2D-område, hvor hver kolonne indeholder 10 værdier, er formlen:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Hvis du vil kombinere de samme kolonner til et 2D-område, hvor hver række indeholder 5 værdier, skal du bruge denne formel:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    Indpakning og sortering af arrayet

    I situationer, hvor kildeområdet har værdier i tilfældig rækkefølge, mens du ønsker, at output skal være sorteret, skal du gå frem på denne måde:

    1. Sorter det oprindelige array på den måde, du ønsker, ved hjælp af funktionen SORT.
    2. Leverer det sorterede array til WRAPCOLS eller WRAPROWS.

    Hvis du f.eks. vil pakke området B4:B23 ind i rækker med 4 værdier i hver række og sortere det resulterende område fra A til Z, skal du konstruere en formel som denne:

    =WRAPROWS(SORT(B4:B23), 4)

    Hvis du vil pakke det samme område ind i kolonner med 10 værdier i hver og sortere output alfabetisk, er formlen:

    =WRAPCOLS(SORT(B4:B23), 10)

    Resultaterne ser ud som følger:

    Tip. Hvis du vil arrangere værdierne i det resulterende array i faldende rækkefølge , indstille det tredje argument ( sort_order ) i SORT-funktionen til -1.

    WRAPCOLS alternativ til Excel 365 - 2010

    I ældre Excel-versioner, hvor funktionen WRAPCOLS ikke understøttes, kan du lave din egen formel til at pakke værdierne fra et endimensionelt array ind i kolonner. Dette kan gøres ved at bruge 5 forskellige funktioner sammen.

    WRAPCOLS alternativ til at konvertere en række til et 2D-interval:

    IFERROR(IF(ROW(A1)> n , "", INDEX( row_range , , , RÆKKE(A1) + (KOLONNE(A1)-1)* n )), "")

    WRAPCOLS alternativ til at konvertere en kolonne til et 2D-område:

    IFERROR(IF(ROW(A1)> n , "", INDEX( kolonne_række , RÆKKE(A1) + (KOLONNE(A1)-1)*) n )), "")

    Hvor n er det maksimale antal værdier pr. kolonne.

    I billedet nedenfor bruger vi følgende formel til at omdanne et område med én række (D4:J4) til et array med tre rækker.

    =IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")

    Og denne formel ændrer et område med én kolonne (B4:B20) til et array med fem rækker:

    =IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")

    Ovenstående løsninger er en efterligning af de tilsvarende WRAPCOLS formler og giver de samme resultater:

    =WRAPCOLS(D4:J4, 3, "")

    og

    =WRAPCOLS(B4:B20, 5, "")

    Husk, at i modsætning til WRAPCOLS-funktionen til dynamiske array'er følger de traditionelle formler metoden med én formel - én celle. Vores første formel indtastes i D8 og kopieres 3 rækker ned og 3 kolonner til højre. Den anden formel indtastes i D14 og kopieres 5 rækker ned og 4 kolonner til højre.

    Sådan fungerer disse formler

    I begge formler bruger vi INDEX-funktionen, som returnerer en værdi fra det angivne array baseret på et række- og kolonnetal:

    INDEX(array, row_num, [column_num])

    Da vi har at gøre med et array med én række, kan vi udelade row_num argumentet, så det er standardværdien 1. Tricket er at have col_num beregnes automatisk for hver celle, hvor formlen er kopieret. Og sådan gør vi det:

    RÆKKE(A1)+(KOLONNE(A1)-1)*3)

    Funktionen ROW returnerer række-nummeret for A1-referencen, som er 1.

    Funktionen COLUMN returnerer kolonnenummeret for A1-referencen, som også er 1. Hvis man trækker 1 fra, bliver det til nul, og hvis man ganger 0 med 3, får man 0.

    Derefter lægger du 1, der returneres af ROW, og 0, der returneres af COLUMN, sammen og får 1 som resultat.

    På denne måde gennemgår INDEX-formlen i den øverste venstre celle i destinationsområdet (D8) denne transformation:

    INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3)))

    ændringer til

    INDEX($D$4:$J$4, ,1)

    og returnerer værdien fra den første kolonne i det angivne array, som er "Apples" i D4.

    Når formlen kopieres til celle D9, ændres de relative cellehenvisninger baseret på en relativ placering af rækker og kolonner, mens den absolutte områdehenvisning forbliver uændret:

    INDEX($D$4:$J$4,, RÆKKE(A2)+(KOLONNE(A2)-1)*3)))

    bliver til:

    INDEX($D$4:$J$4,, 2+(1-1)*3)))

    bliver:

    INDEX($D$4:$J$4,,, 2)))

    og returnerer værdien fra den anden kolonne i det angivne array, som er "Abrikoser" i E4.

    IF-funktionen kontrollerer rækkeantallet, og hvis det er større end det antal rækker, du har angivet (3 i vores tilfælde), returnerer den en tom streng (""), ellers er det resultatet af INDEX-funktionen:

    IF(ROW(A1)>3, "", INDEX(....))

    Endelig løser IFERROR-funktionen en #REF!-fejl, der opstår, når formlen kopieres til flere celler, end der egentlig er brug for.

    Den anden formel, der konverterer en kolonne til et 2D-interval, fungerer med samme logik. Forskellen er, at du bruger kombinationen ROW + COLUMN til at finde ud af row_num argument for INDEX. col_num parameteren er ikke nødvendig i dette tilfælde, da der kun er én kolonne i kildematrixen.

    WRAPROWS alternativ til Excel 365 - 2010

    Hvis du vil pakke værdierne fra et endimensionelt array ind i rækker i Excel 2019 og tidligere, kan du bruge følgende alternativer til funktionen WRAPROWS.

    Omdanne en række til et 2D-område:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , , KOLONNE(A1)+(RÆKKE(A1)-1)* n )), "")

    Ændre en kolonne til et 2D-interval:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( kolonne_række , KOLONNE(A1)+(RÆKKE(A1)-1)* n )), "")

    Hvor n er det maksimale antal værdier pr. række.

    I vores eksempeldatasæt bruger vi følgende formel til at konvertere et område med én række (D4:J4) til et område med tre kolonner. Formlen lander i celle D8 og kopieres derefter på tværs af 3 kolonner og 3 rækker.

    =IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")

    Hvis du vil omdanne et område med 1 kolonne (B4:B20) til et område med 5 kolonner, skal du indtaste nedenstående formel i D14 og trække den over 5 kolonner og 4 rækker.

    =IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")

    I Excel 365 kan de samme resultater opnås med de tilsvarende WRAPCOLS-formler:

    =WRAPROWS(D4:J4, 3, "")

    og

    =WRAPROWS(B4:B20, 5, "")

    Sådan fungerer disse formler

    Disse formler fungerer i princippet som i det foregående eksempel. Forskellen er, hvordan du bestemmer row_num og col_num koordinater for INDEX-funktionen:

    INDEX($D$4:$J$4,, KOLONNE(A1)+(RÆKKE(A1)-1)*3)))

    For at få kolonnenummeret for den øverste venstre celle i destinationsområdet (D8) bruger du dette udtryk:

    KOLONNE(A1)+(RÆKKE(A1)-1)*3)

    der ændres til:

    1+(1-1)*3

    og giver 1.

    Resultatet er, at nedenstående formel returnerer værdien fra den første kolonne i det angivne array, som er "Apples":

    INDEX($D$4:$J$4,,, 1)

    Indtil videre er resultatet det samme som i det foregående eksempel. Men lad os se, hvad der sker i andre celler...

    I celle D9 ændres de relative cellehenvisninger som følger:

    INDEX($D$4:$J$4,, KOLONNE(A2)+(RÆKKE(A2)-1)*3)))

    Så formlen bliver til:

    INDEX($D$4:$J$4,, 1+(2-1)*3)))

    bliver:

    INDEX($D$4:$J$4,,, 4))

    og returnerer værdien fra den fjerde kolonne i det angivne array, som er "Cherries" i G4.

    IF-funktionen kontrollerer kolonnenummeret, og hvis det er større end det antal kolonner, du har angivet, returnerer den en tom streng (""), ellers resultatet af INDEX-funktionen:

    IF(COLUMN(A1)>3, "", INDEX(....))

    Som en sidste detalje forhindrer IFERROR, at der opstår #REF! fejl i "ekstra" celler, hvis du kopierer formlen til flere celler end nødvendigt.

    Funktionen WRAPCOLS eller WRAPROWS fungerer ikke

    Hvis "wrap"-funktionerne ikke er tilgængelige i din Excel eller resulterer i en fejl, er det højst sandsynligt en af nedenstående årsager.

    #NAME? fejl

    I Excel 365 kan der opstå en #NAME? fejl, fordi du har stavet funktionens navn forkert. I andre versioner indikerer det, at funktionerne ikke understøttes. Som en løsning kan du bruge WRAPCOLS alternativt eller WRAPROWS alternativt.

    #VALUE! fejl

    Der opstår en #VALUE-fejl, hvis vektor argumentet ikke er et endimensionalt array.

    #NUM! fejl

    Der opstår en #NUM-fejl, hvis wrap_count værdien er 0 eller et negativt tal.

    #SPILL! fejl

    Oftest indikerer en #SPILL-fejl, at der ikke er nok tomme celler til at spilde resultaterne i. Ryd de tilstødende celler, og så er fejlen væk. Hvis fejlen fortsætter, kan du læse, hvad #SPILL betyder i Excel, og hvordan du løser den.

    Sådan bruger du funktionerne WRAPCOLS og WRAPROWS til at konvertere et endimensionelt område til et todimensionelt array i Excel. Tak for din læsning og håber at se dig på vores blog i næste uge!

    Arbejdsbog til download

    WRAPCOLS og WRAPROWS funktioner - eksempler (.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.