Excel TOCOL-funksjon for å konvertere rekkevidde til enkelt kolonne

  • Dele Denne
Michael Brown

En enkel måte å transformere en matrise eller et område til en kolonne med TOCOL-funksjonen.

Muligheten til å transponere data fra kolonner til rader og omvendt har vært i Excel i ganske lang tid en stund. Men å konvertere en rekke celler til en enkelt kolonne var en vanskelig oppgave å knekke. Nå endrer det seg endelig. Microsoft har introdusert en ny funksjon, kalt TOCOL, som kan gjøre en matrise-til-kolonne-transformasjon på et blunk. Nedenfor er en liste over oppgaver som denne nye funksjonen enkelt kan løse.

    Excel TOCOL-funksjon

    TOCOL-funksjonen i Excel konverterer en matrise eller et celleområde til en enkelt kolonne.

    Funksjonen tar tre argumenter, men bare det første kreves.

    TOCOL(matrise, [ignorer], [skann_etter_kolonne])

    Hvor:

    Array (påkrevd) - en matrise eller et område som skal transformeres til en kolonne.

    Ignorer (valgfritt) - definerer om tomrom eller/og feil skal ignoreres. Kan være en av disse verdiene:

    • 0 eller utelatt (standard) - behold alle verdier
    • 1 - ignorer blanks
    • 2 - ignorer feil
    • 3 - ignorer blanks og feil

    Scan_by_column (valgfritt) - bestemmer om matrisen skal skannes horisontalt eller vertikalt:

    • FALSE eller utelatt (standard) - skann matrisen for rad fra venstre mot høyre.
    • TRUE - skann matrisen for kolonne fra topp til bunn.

    Tips:

    • For å konvertere en matrise til en enkelt rad, bruk TOROWfunksjon.
    • For å gjøre den motsatte kolonne-til-matrise-transformasjonen, bruk enten WRAPCOLS-funksjonen for å bryte etter kolonne eller WRAPROWS-funksjonen for å bryte etter rad.
    • For å transponere en matrise fra horisontal til vertikal eller omvendt, dvs. endre rader til kolonner, bruk TRANSPOSE-funksjonen.

    TOCOL-tilgjengelighet

    TOCOL er en ny funksjon som støttes i Excel for Microsoft 365 (for Windows) og Mac) og Excel for nettet.

    Grunnleggende TOCOL-formel for å transformere rekkevidde til kolonne

    TOCOL-formelen i sin enkleste form krever bare ett argument - matrise . For eksempel, for å plassere en todimensjonal matrise bestående av 3 kolonner og 4 rader i en enkelt kolonne, er formelen:

    =TOCOL(A2:C5)

    Formelen legges bare inn i én celle (E2 i dette eksemplet) og søles automatisk inn i cellene nedenfor. I forhold til Excel kalles resultatet et spillområde.

    Slik fungerer denne formelen:

    Teknisk sett blir området A2:C5 først konvertert til en todimensjonal matrise. Legg merke til de semikolonseparerte radene og kommadelte kolonner:

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

    TOCOL-funksjonen skanner matrisen fra venstre til høyre og transformerer den til en endimensjonal vertikal matrise:

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

    Resultatet plasseres i celle E2, hvorfra det søles inn i cellene nedenfor.

    Hvordan bruke TOCOL-funksjonen i Excel - formeleksempler

    For å få mer forståelse avmulighetene for TOCOL-funksjonen og hvilke oppgaver den kan dekke, la oss ta en titt på noen formeleksempler.

    Transformer array til kolonne og ignorer blanks og feil

    Som du kanskje har lagt merke til i forrige eksempel , beholder standard TOCOL-formel alle verdiene fra kildematrisen, inkludert tomme celler og feil.

    I den resulterende matrisen er tomme celler representert med nuller, noe som kan være ganske forvirrende, spesielt hvis den opprinnelige matrisen har 0 verdier. Løsningen er å hoppe over tomme felter . For dette setter du det andre argumentet til 1:

    =TOCOL(A2:C5, 1)

    For å ignorere feil , sett det andre argumentet til 2:

    =TOCOL(A2:C5, 2)

    For å ekskludere både blank og feil , bruk 3 for ignore -argumentet:

    =TOCOL(A2:C5, 3)

    Skann array horisontalt eller vertikalt

    Med standard skanne_etter_kolonne -argumentet (FALSE eller utelatt), skanner TOCOL-funksjonen matrisen horisontalt etter rad. For å behandle verdier etter kolonne, sett dette argumentet til TRUE eller 1. For eksempel:

    =TOCOL(A2:C5, ,TRUE)

    Legg merke til at i begge tilfeller er de returnerte matrisene like store, men verdiene er ordnet i en annen rekkefølge.

    Kombiner flere områder til én kolonne

    Hvis du har å gjøre med flere ikke-sammenhengende områder, kan du først kombinere områdene vertikalt til en enkelt matrise ved hjelp av VSTACK-funksjonen, og bruk deretter TOCOL for å transformere den kombinerte matrisen til en kolonne.

    Forutsatt at det første området er A2:C4 og det andre området er A8:C9, har formelen denne formen:

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

    Denne formelen viser standardoppførselen - leser de kombinerte matrisene horisontalt fra venstre til høyre som vist i kolonne E i bildet nedenfor.

    For å lese verdier vertikalt fra topp til bunn, setter du det tredje argumentet til TOCOL til TRUE:

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

    Vær oppmerksom på at i dette tilfellet returnerer formelen først verdier fra kolonne A i begge matrisene, deretter fra kolonne B, og så videre. Årsaken er at TOCOL skanner en enkelt stablet matrise, ikke de originale individuelle områdene.

    Hvis forretningslogikken din krever å stable de opprinnelige områdene horisontalt i stedet for vertikalt, bruk HSTACK-funksjonen i stedet for VSTACK.

    For å legge til hver påfølgende matrise til høyre for den forrige matrisen og lese kombinerte matriser horisontalt er formelen:

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

    For å legge til hver påfølgende matrise til høyre for den forrige matrisen og skanne de kombinerte matrisene vertikalt, er formelen:

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

    Trekke ut unike verdier fra et område med flere kolonner

    Excel UNIQUE-funksjonen kan enkelt finne unike i en enkelt kolonne eller rad samt returnere unike rader, men den kan ikke trekke ut unike verdier fra en rekke med flere kolonner. Løsningen er å bruke den sammen med TOCOL-funksjonen.

    For eksempel for å trekke ut alle de forskjellige (distinkte) verdiene fra områdetA2:C7, formelen er:

    =UNIQUE(TOCOL(A2:C7))

    I tillegg kan du legge inn formelen ovenfor i SORT-funksjonen for å ordne den returnerte matrisen i alfabetisk rekkefølge:

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

    Hvordan konvertere område til kolonne i Excel 365 - 2010

    I Excel-versjoner der TOCOL-funksjonen ikke støttes, finnes det et par alternative måter å transformere et celleområde til en kolonne. Disse løsningene er ganske vanskelige, men fungerer uansett.

    For å lese området for rad:

    INDEX( område , QUOTIENT(ROW(A1)-1, COLUMNS( område ))+1, MOD(ROW(A1)-1, COLUMNS( område ))+1)

    For å lese området for kolonne:

    INDEX( område , MOD(RAD(A1)-1, RADER( område ))+1, QUOTIENT(RAD(A1)-1, RADER( område ))+1 )

    For eksempeldatasettet vårt er formlene som følger:

    For å skanne området horisontalt fra venstre til høyre :

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

    Denne formelen tilsvarer TOCOL-funksjonen med det tredje argumentet satt til FALSE eller utelatt:

    =TOCOL(A2:C5)

    For å skanne området vertikalt fra topp til bunn :

    =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 formelen kan sammenlignes med TOCOL-funksjonen med det tredje argumentet satt til TRUE:

    =TOCOL(A2:C5, ,TRUE)

    I motsetning til TOCOL, bør de alternative formlene angis i hver celle der du vil at resultatene skal vises. I vårt tilfelle går formlene til cellene E2 (etter rad) og G2 (etter kolonne), og blir deretter kopiert ned til rad 13.

    Hvis formlene kopieres til flere rader enn nødvendig, vil en#REF! feilen vises i "ekstra" celler. For å forhindre at dette skjer, kan du neste formlene i IFERROR-funksjonen slik:

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

    Merk at for at formlene skal kopieres riktig, låser vi området ved å bruke absolutte cellereferanser ($ A$2:$C$5). I stedet kan du bruke et navngitt område.

    Hvordan disse formlene fungerer

    Nedenfor er en detaljert oversikt over den første formelen som ordner celler etter rad:

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

    Ideen er å bruke INDEX-funksjonen til å returnere verdien til en bestemt celle basert på dens relative rad- og kolonnenummer i området.

    radnummeret beregnes ved hjelp av denne kombinasjonen :

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

    QUOTIENT returnerer heltallsdelen av en divisjon.

    For teller bruker du ROW(A1)-1, som returnerer en serienummer fra 0 i E2 (første celle der formelen er angitt) til 11 i E13 (den siste cellen der formelen er angitt).

    nevneren markert med COLUMNS($A $2:$C$5)) er konstant og lik antall kolonner i området ditt (3 i vårt tilfelle).

    Nå, hvis du sjekker KVOTIENTENs resultat for de første 3 cellene (E2:E4) , vil du se at det er lik 0 (fordi heltallsdelen av divisjonen er null). Å legge til 1 gir radnummer 1.

    For de neste 3 cellene (E5:E5), returnerer QUOTIENT 1, og +1-operasjonen leverer radnummer 2. Og så videre.

    Med andre ord, denne delen av formelen skaper en repetisjontallsekvens som 1,1,1,2,2,2,3,3,3,4,4,4,... Hvert tall gjentas så mange ganger som det er kolonner i området ditt.

    For å beregne kolonnenummeret , bygger du en passende tallsekvens ved å bruke MOD-funksjonen:

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

    Siden det er 3 kolonner i vårt område (A2:C5), sekvensen må være 1,2,3,1,2,3,...

    MOD-funksjonen returnerer resten etter divisjon.

    I E2, MOD(RAD(A1)-1, KOLONNER ($A$2:$C$5))+1)

    blir

    MOD(1-1, 3)+1)

    og returnerer 1.

    I E3 blir MOD(ROW(A2)-1, COLUMNS($A$2:$C$5))+1)

    MOD(2-1, 3) +1)

    og returnerer 2.

    Med rad- og kolonnenumrene etablert, har INDEX ingen problemer med å hente den nødvendige verdien.

    I E2, INDEX($A$2 :$C$5, 1, 1) returnerer verdien fra den første raden og den første kolonnen i det refererte området, dvs. fra celle A2.

    I E3, INDEX($A$2:$C$5, 1 , 2) returnerer verdien fra 1. rad og 2. kolonne, dvs. fra celle B2.

    Og så videre.

    Den andre formelen som skanner området med c olumn, fungerer på lignende måte. Forskjellen er at den bruker MOD for å få radnummeret og QUOTIENT for å få kolonnenummeret.

    TOCOL-funksjonen fungerer ikke

    Hvis TOCOL-funksjonen gir en feil, er det mest sannsynlig for å være en av disse grunnene:

    TOCOL støttes ikke i Excel

    Når du får et #NAME? feil, er det riktig stavemåte av funksjonens navn det første som skal gjøreskryss av. Hvis navnet er riktig, men feilen vedvarer, er ikke funksjonen tilgjengelig i din versjon av Excel. I dette tilfellet bør du vurdere å bruke et TOCOL-alternativ.

    Matrisen er for stor

    En #NUM-feil indikerer at matrisen ikke kan passe inn i en kolonne. Et typisk tilfelle er når du refererer til hele kolonner eller rader.

    Det er ikke nok tomme celler

    Når en #SPILL-feil oppstår, sjekk at kolonnen der formelen er angitt har nok tomme celler til å fylles med resultatene. Hvis cellene er visuelt tomme, sørg for at det ikke er mellomrom og andre tegn som ikke skrives ut. For mer informasjon, se Hvordan fikse #SPILL-feilen i Excel.

    Slik kan du bruke TOCOL-funksjonen i Excel 365 og alternative løsninger i tidligere versjoner for å transformere en 2-dimensjonal matrise til en enkelt kolonne. Jeg takker for at du leser og håper å se deg på bloggen vår neste uke!

    Øvningsarbeidsbok

    Excel TOCOL-funksjon - formeleksempler (.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.