Excel TOCOL-funktion til at konvertere rækkevidde til en enkelt kolonne

  • Del Dette
Michael Brown

En nem måde at omdanne et array eller et område til en kolonne med TOCOL-funktionen.

Muligheden for at omkonvertere data fra kolonner til rækker og omvendt har eksisteret i Excel i et stykke tid. Men det har været en vanskelig opgave at konvertere en række celler til en enkelt kolonne. Nu er det endelig ved at ændre sig. Microsoft har introduceret en ny funktion, kaldet TOCOL, som kan foretage en transformation fra array til kolonne på et øjeblik. Nedenfor er der en liste over opgaver, som denne nye funktion nemt kan løse.

    Excel TOCOL-funktionen

    TOCOL-funktionen i Excel konverterer et array eller en række celler til en enkelt kolonne.

    Funktionen har tre argumenter, men kun det første er påkrævet.

    TOCOL(array, [ignorere], [scan_by_kolonne])

    Hvor:

    Array (påkrævet) - et array eller et område, der skal omdannes til en kolonne.

    Ignorer (valgfri) - angiver, om der skal ignoreres mellemrum og/eller fejl. Kan være en af disse værdier:

    • 0 eller udeladt (standard) - beholder alle værdier
    • 1 - ignorér tomme felter
    • 2 - ignorere fejl
    • 3 - ignorér tomme felter og fejl

    Scan_by_kolonne (valgfrit) - bestemmer, om arrayet skal scannes horisontalt eller vertikalt:

    • FALSE eller udeladt (standard) - scanner arrayet efter række fra venstre mod højre.
    • TRUE - scanne arrayet i kolonnevis fra top til bund.

    Tips:

    • Hvis du vil konvertere et array til en enkelt række, skal du bruge funktionen TOROW.
    • Hvis du vil foretage den modsatte kolonne-til-array-transformation, skal du enten bruge funktionen WRAPCOLS til at ombryde efter kolonne eller funktionen WRAPROWS til at ombryde efter række.
    • Hvis du vil transponere et array fra vandret til lodret eller omvendt, dvs. ændre rækker til kolonner, skal du bruge funktionen TRANSPOSE.

    TOCOL tilgængelighed

    TOCOL er en ny funktion, som understøttes i Excel til Microsoft 365 (til Windows og Mac) og Excel til internettet.

    Grundlæggende TOCOL-formel til at omdanne et område til en kolonne

    TOCOL-formlen kræver i sin enkleste form kun ét argument - array For at placere et todimensionalt array bestående af 3 kolonner og 4 rækker i en enkelt kolonne er formlen f.eks:

    =TOCOL(A2:C5)

    Formlen indtastes kun i én celle (E2 i dette eksempel) og spredes automatisk til de underliggende celler. I Excel kaldes resultatet et spill-område.

    Sådan fungerer denne formel:

    Teknisk set konverteres intervallet A2:C5 først til et todimensionelt array. Bemærk de semikolonseparerede rækker og kommategrænsede kolonner:

    {"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}

    TOCOL-funktionen scanner arrayet fra venstre mod højre og omdanner det til et endimensionalt vertikalt array:

    {"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}

    Resultatet anbringes i celle E2, hvorfra det spredes til de nedenstående celler.

    Sådan bruger du TOCOL-funktionen i Excel - eksempler på formler

    For at få en bedre forståelse af TOCOL-funktionens muligheder og de opgaver, den kan dække, skal vi se på nogle eksempler på formler.

    Omdanne array til kolonne uden at tage hensyn til tomme felter og fejl

    Som du måske har bemærket i det foregående eksempel, beholder standardformlen TOCOL alle værdierne fra kildematrixen, herunder tomme celler og fejl.

    I det resulterende array repræsenteres tomme celler af nuller, hvilket kan være ret forvirrende, især hvis det oprindelige array har 0 værdier. Løsningen er at springe over tomme felter Hertil indstiller du det andet argument til 1:

    =PROTOKOL(A2:C5, 1)

    Til ignorere fejl , sætte det andet argument til 2:

    =PROTOKOL(A2:C5, 2)

    For at udelukke begge dele, blanktegn og fejl , bruge 3 til den ignorere argument:

    =PROTOKOL(A2:C5, 3)

    Scan array horisontalt eller vertikalt

    Med standardindstillingen scan_by_kolonne argumentet (FALSE eller udeladt), scanner TOCOL-funktionen arrayet horisontalt efter række. Hvis du vil behandle værdierne efter kolonne, skal du indstille dette argument til TRUE eller 1. F.eks:

    =PROTOKOL(A2:C5, ,TRUE)

    Bemærk, at de returnerede arrays i begge tilfælde har samme størrelse, men at værdierne er arrangeret i en anden rækkefølge.

    Kombiner flere intervaller i én kolonne

    Hvis du har at gøre med flere ikke-sammenhængende intervaller, kan du først kombinere intervallerne vertikalt til et enkelt array ved hjælp af VSTACK-funktionen og derefter bruge TOCOL til at omdanne det kombinerede array til en kolonne.

    Hvis vi antager, at det første område er A2:C4 og det andet område er A8:C9, har formlen følgende formular:

    =PROTOKOL(VSTACK(A2:C4, A8:C9))

    Denne formel demonstrerer standardadfærden - den læser de kombinerede arrays horisontalt fra venstre mod højre som vist i kolonne E i billedet nedenfor.

    Hvis du vil læse værdier lodret fra top til bund, skal du sætte det tredje argument i TOCOL til TRUE:

    =TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)

    Vær opmærksom på, at formlen i dette tilfælde først returnerer værdierne fra kolonne A i begge arrays, derefter fra kolonne B osv. Årsagen er, at TOCOL scanner et enkelt stablet array og ikke de oprindelige individuelle intervaller.

    Hvis din forretningslogik kræver, at de originale intervaller stables horisontalt i stedet for vertikalt, skal du bruge funktionen HSTACK i stedet for VSTACK.

    For at tilføje hvert efterfølgende array til højre for det foregående array og læse de kombinerede arrays horisontalt er formlen:

    =PROTOKOL(HSTACK(A2:C4, A8:C10))

    For at tilføje hvert efterfølgende array til højre for det foregående array og scanne de kombinerede arrays lodret, er formlen:

    =PROTOKOL(HSTACK(A2:C4, A8:C10), ,TRUE)

    Udtrække unikke værdier fra et område med flere kolonner

    Excel-funktionen UNIQUE kan nemt finde unikke værdier i en enkelt kolonne eller række og returnere unikke rækker, men den kan ikke udtrække unikke værdier fra et array med flere kolonner. Løsningen er at bruge den sammen med funktionen TOCOL.

    For at udtrække alle de forskellige (særskilte) værdier fra intervallet A2:C7 er formlen f.eks:

    =UNIK(TOCOL(A2:C7))

    Derudover kan du indpakke ovenstående formel i funktionen SORT for at ordne det returnerede array i alfabetisk rækkefølge:

    =SORT(UNIK(TOCOL(A2:C7)))

    Sådan konverteres område til kolonne i Excel 365 - 2010

    I Excel-versioner, hvor TOCOL-funktionen ikke understøttes, findes der et par alternative måder at omdanne en række celler til en kolonne på. Disse løsninger er ret vanskelige, men fungerer alligevel.

    Sådan læser du intervallet pr. række:

    INDEX( rækkevidde , KVOTIENT(RÆKKE(A1)-1, KOLONNER( rækkevidde ))+1, MOD(RÆKKE(A1)-1, KOLONNER( rækkevidde ))+1)

    Sådan læser du intervallet efter kolonne:

    INDEX( rækkevidde , MOD(RÆKKE(A1)-1, RÆKKER( rækkevidde ))+1, KVOTIENTEN(RÆKKE(A1)-1, RÆKKER( rækkevidde ))+1)

    For vores eksempeldatasæt er formlerne som følger:

    Sådan scannes området vandret fra venstre til højre :

    =INDEX($A$2:$C$5, KVOTIENTEN(RÆKKE(A1)-1, KOLONNER($A$2:$C$5))+1, MOD(RÆKKE(A1)-1, KOLONNER($A$2:$C$5))+1)

    Denne formel svarer til TOCOL-funktionen med det tredje argument sat til FALSK eller udeladt:

    =TOCOL(A2:C5)

    Sådan scannes området lodret fra top til bund :

    =INDEX($A$2:$C$5, MOD(ROW(A1)-1, ROWS($A$2:$C$5))+1, QUOTIENT(ROW(A1)-1, ROWS($A$2:$C$5))+1)

    Denne formel kan sammenlignes med TOCOL-funktionen, hvis det tredje argument er sat til TRUE:

    =PROTOKOL(A2:C5, ,TRUE)

    I modsætning til TOCOL skal de alternative formler indtastes i hver celle, hvor du ønsker, at resultaterne skal vises. I vores tilfælde skal formlerne indtastes i cellerne E2 (efter række) og G2 (efter kolonne), og derefter kopieres de ned til række 13.

    Hvis formlerne kopieres til flere rækker end nødvendigt, vises en #REF!-fejl i "ekstra" celler. For at forhindre dette kan du indlejre formlerne i IFERROR-funktionen på følgende måde:

    =IFERROR(INDEX($A$2:$C$5, QUOTIENT(RÆKKE(A1)-1, KOLONNER($A$2:$C$5))+1, MOD(RÆKKE(A1)-1, KOLONNER($A$2:$C$5))+1), ""))

    Bemærk, at for at formlerne kan kopieres korrekt, skal vi låse området ved hjælp af absolutte cellereferencer ($A$2:$C$5). I stedet kan du bruge et navngivet område.

    Sådan fungerer disse formler

    Nedenfor er en detaljeret gennemgang af den første formel, der ordner cellerne efter række:

    =INDEX($A$2:$C$5, KVOTIENTEN(RÆKKE(A1)-1, KOLONNER($A$2:$C$5))+1, MOD(RÆKKE(A1)-1, KOLONNER($A$2:$C$5))+1)

    Ideen er at bruge INDEX-funktionen til at returnere værdien af en bestemt celle baseret på dens relative række- og kolonnetal i intervallet.

    række nummer beregnes ved hjælp af denne kombination:

    KVOTIENT(RÆKKE(A1)-1, KOLONNER($A$2:$C$5))+1

    QUOTIENT returnerer den hele taldel af en division.

    Til tæller , bruger du ROW(A1)-1, som returnerer et løbenummer fra 0 i E2 (den første celle, hvor formlen er indtastet) til 11 i E13 (den sidste celle, hvor formlen er indtastet).

    nævner bragt ved COLUMNS($A$2:$C$5))) er konstant og er lig med antallet af kolonner i dit område (3 i vores tilfælde).

    Hvis du nu kontrollerer resultatet af QUOTIENT'en for de første 3 celler (E2:E4), vil du se, at det er lig med 0 (fordi den hele del af divisionen er nul). Hvis du tilføjer 1, får du række nummer 1.

    For de næste 3 celler (E5:E5) returnerer QUOTIENT 1, og operationen +1 giver række nummer 2. Og så videre.

    Med andre ord skaber denne del af formlen en gentagende talsekvens som f.eks. 1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,... Hvert tal gentages lige så mange gange, som der er kolonner i dit område.

    Til beregning af den kolonnenummer , kan du opbygge en passende talsekvens ved hjælp af MOD-funktionen:

    MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1

    Da der er 3 kolonner i vores område (A2:C5), skal sekvensen være 1,2,3,1,2,3,1,2,3,...

    MOD-funktionen returnerer resten efter division.

    I E2, MOD(RÆKKE(A1)-1, COLUMNS($A$2:$C$5))+1)

    bliver

    MOD(1-1, 3)+1)

    og returnerer 1.

    I E3, MOD(RÆKKE(A2)-1, COLUMNS($A$2:$C$5))+1)

    bliver

    MOD(2-1, 3)+1)

    og returnerer 2.

    Når række- og kolonnumrene er fastlagt, har INDEX ingen problemer med at hente den ønskede værdi.

    I E2 returnerer INDEX($A$2:$C$5, 1, 1) værdien fra den første række og den første kolonne i det refererede område, dvs. fra celle A2.

    I E3 returnerer INDEX($A$2:$C$5, 1, 2) værdien fra den første række og den anden kolonne, dvs. fra celle B2.

    Og så videre.

    Den anden formel, der scanner området efter kolonne, fungerer på samme måde, men forskellen er, at den bruger MOD til at få række-nummeret og QUOTIENT til at få kolonne-nummeret.

    TOCOL-funktionen fungerer ikke

    Hvis TOCOL-funktionen giver en fejl, er det sandsynligvis en af disse årsager:

    TOCOL er ikke understøttet i din Excel

    Når du får en #NAME? fejl, er den korrekte stavning af funktionens navn det første, du skal kontrollere. Hvis navnet er korrekt, men fejlen fortsætter, er funktionen ikke tilgængelig i din version af Excel. I så fald skal du overveje at bruge et TOCOL-alternativ.

    Array er for stor

    En #NUM-fejl angiver, at arrayet ikke kan passe ind i en kolonne. Et typisk tilfælde er, når du henviser til hele kolonner eller rækker.

    Der er ikke nok tomme celler

    Når der opstår en #SPILL-fejl, skal du kontrollere, at kolonnen, hvor formlen er indtastet, har nok tomme celler til at blive fyldt op med resultaterne. Hvis cellerne er tomme, skal du sikre dig, at der ikke er mellemrum og andre tegn, der ikke kan skrives, i dem. Du kan finde flere oplysninger i Sådan retter du #SPILL-fejlen i Excel.

    Sådan kan du bruge TOCOL-funktionen i Excel 365 og alternative løsninger i tidligere versioner til at omdanne et 2-dimensionelt array til en enkelt kolonne. Tak for din læsning, og jeg håber at se dig på vores blog i næste uge!

    Arbejdsbog til øvelser

    Excel TOCOL-funktion - eksempler på 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.