Innholdsfortegnelse
En rask måte å gjøre om en rekke celler til en enkelt rad ved hjelp av TOROW funksjonen.
Microsoft Excel 365 har introdusert flere nye funksjoner å utføre ulike manipulasjoner med arrays. Med TOROW kan du utføre rekke-til-rad-transformasjoner på kort tid. Her er en liste over oppgaver som denne nye funksjonen kan utføre:
Excel TOROW-funksjonen
TOROW-funksjonen i Excel brukes til å konvertere en matrise eller et celleområde til én rad.
Funksjonen tar totalt tre argumenter, hvorav bare det første er nødvendig.
TOROW(matrise, [ignorer], [skann_etter_kolonne])Hvor:
Array (påkrevd) – en matrise eller et område som skal transformeres til en enkelt rad.
Ignorer (valgfritt) – bestemmer om blanke felter skal ignoreres eller/og feil. Kan ta 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) - definerer hvordan du skanner matrisen:
- FALSE or utelatt (standard) - skann matrisen horisontalt etter rad.
- TRUE - skann matrisen vertikalt etter kolonne.
Tips:
- For å transformere en matrise i en enkelt kolonne, bruk TOCOL-funksjonen.
- For å utføre den omvendte rad-til-matrise-transformasjonen, bruk enten WRAPCOLS-funksjonen for å bryte inn i kolonner eller WRAPROWS-funksjonen for å bryte innarray til rader.
- For å gjøre rader til kolonner, bruk TRANSPOSE-funksjonen.
TOROW-tilgjengelighet
TOROW er en ny funksjon, som kun støttes i Excel for Microsoft 365 (for Windows og Mac) og Excel for nettet.
Grunnleggende TOROW-formel i Excel
For å gjøre en enkel rekke-til-rad-transformasjon, bruk TOROW-formelen i sin grunnleggende form. For dette trenger du bare å definere det første argumentet ( matrise ).
For å gjøre for eksempel om en todimensjonal matrise bestående av 3 kolonner og 3 rader til en enkelt rad, formelen er:
=TOROW(A3:C6)
Du skriver inn formelen i bare én celle (A10 i vårt tilfelle), og den søles automatisk inn i så mange celler som trengs for å holde alle resultatene. I Excel-termer kalles utdataområdet omgitt av en tynn blå kant et spillområde.
Hvordan denne formelen fungerer:
Først transformeres et medfølgende celleområde til en todimensjonal matrise. Legg merke til de kommadelte kolonnene og semikolonseparerte radene:
{"Apple","Banana","Cherry";1,2,3;4,5,6;7,8,9}
Deretter leser TOROW-funksjonen matrisen fra venstre til høyre og konverterer den til en endimensjonal horisontal matrise:
{"Apple","Banana","Cherry",1,2,3,4,5,6,7,8,9}
Resultatet går til celle A10, hvorfra det renner inn i nabocellen til høyre.
Transformer området til rad og ignorerer tomme felter og feil
Som standard beholder TOROW-funksjonen alle verdiene fra kildematrisen, inkludert tomme celler ogfeil. I utdataene vises null verdier i stedet for tomme celler, noe som kan være ganske forvirrende.
For å ekskludere blanke , sett ignorer -argumentet til 1:
=TOROW(A3:C5, 1)
For å ignorere feil , sett ignorer -argumentet til 2:
=TOROW(A3:C5, 2)
For å hoppe over både blanks og feil , bruk 3 for ignore -argumentet:
=TOROW(A3:C5, 3)
Bildet nedenfor viser alle tre scenariene i aksjon:
Les array horisontalt eller vertikalt
Med standard virkemåte behandler TOROW-funksjonen arrayen horisontalt fra venstre til høyre. For å skanne verdiene etter kolonne fra topp til bunn, setter du det tredje argumentet ( skann_etter_kolonne ) til TRUE eller 1.
For eksempel, for å lese kildeområdet for rad, formelen i E3 er:
=TOROW(A3:C5)
For å skanne området etter kolonne, er formelen i E8:
=TOROW(A3:C5, ,TRUE)
I begge tilfeller er de resulterende matrisene samme størrelse, men verdiene er ordnet i en annen rekkefølge.
Slå sammen flere områder til én rad
For å kombinere flere ikke-tilstøtende områder til en enkelt rad, stabler du dem først horisontalt eller vertikalt i en enkelt matrise ved hjelp av henholdsvis HSTACK eller VSTACK , og bruk deretter TOROW-funksjonen til å konvertere den kombinerte matrisen til en rad.
Avhengig av forretningslogikken din, vil en av følgende formler utføre oppgaven.
Stable matriser horisontalt og konverter med rad
Med den førsteområde i A3:C4 og det andre området i A8:C9, vil formelen nedenfor stable de to områdene horisontalt i en enkelt matrise, og deretter transformere den til en rad som leser verdiene fra venstre mot høyre. Resultatet er i E3 i bildet nedenfor.
=TOROW(HSTACK(A3:C4, A8:C9))
Stable matriser horisontalt og konverter etter kolonne
For å lese den stablede matrisen vertikalt fra topp til bunn, du setter det tredje argumentet til TOROW til TRUE som vist i E5 i bildet nedenfor:
=TOROW(HSTACK(A3:C4, A8:C9), ,TRUE)
Stable arrays vertikalt og konverter etter rad
For å legge til hver påfølgende array til bunnen av forrige array og les den kombinerte arrayen horisontalt, formelen i E12 er:
=TOROW(VSTACK(A3:C4, A8:C9))
Stable arrays vertikalt og konverter etter kolonne
For å legge til hver påfølgende matrise til bunnen av den forrige og skanne den kombinerte matrisen vertikalt, er formelen:
=TOROW(VSTACK(A3:C4, A8:C9), ,TRUE)
For bedre å forstå logikken, observer den forskjellige rekkefølgen av verdier i de resulterende matrisene:
Trekk ut unike verdier fra et område til en rad
Fra og med Microsoft Excel 2016 har vi en fantastisk funksjon, kalt UNIQUE, som enkelt kan hente unike verdier fra en enkelt kolonne eller rad. Den kan imidlertid ikke håndtere arrayer med flere kolonner. For å overvinne denne begrensningen, bruk UNIQUE- og TOROW-funksjonene sammen.
For å trekke ut alle de forskjellige (distinkte) verdiene fra området A2:C7 og plassere resultatene i én rad,formelen er:
=UNIQUE(TOROW(A2:C7), TRUE)
Ettersom TOROW returnerer en endimensjonal horisontal matrise, setter vi det andre ( by_col ) argumentet til UNIQUE til TRUE for å sammenligne kolonnene mot hver annet.
Hvis du vil ha resultatene ordnet i alfabetisk rekkefølge, pakk formelen ovenfor inn i SORT-funksjonen:
=SORT(UNIQUE(TOROW(A2:C7), TRUE), , ,TRUE )
Som med UNIQUE, by_col -argumentet SORT er også satt til TRUE.
TOROW-alternativ for Excel 365 - 2010
I Excel-versjoner der TOROW-funksjonen ikke er tilgjengelig, kan du transformere et område til en enkelt rad ved å bruke en kombinasjon av noen få forskjellige funksjoner som fungerer i eldre versjoner. Disse løsningene er mer komplekse, men de fungerer.
For å skanne området horisontalt er den generiske formelen:
INDEX( område , QUOTIENT(COLUMN (A1)-1, COLUMNS( område ))+1, MOD(COLUMN(A1)-1, COLUMNS( område ))+1)For å skanne området vertikalt er den generiske formelen :
INDEX( område , MOD(COLUMN(A1)-1, COLUMNS( område ))+1, QUOTIENT(COLUMN (A1)-1, COLUMNS(<15)>område ))+1)For eksempeldatasettet vårt i A3:C5 har formlene denne formen:
For å skanne området etter rad:
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
Denne formelen er et alternativ til TOROW-funksjonen med det tredje argumentet satt til FALSE eller utelatt:
=TOROW(A3:C5)
For å skanne området ved å kolonne:
=INDEX($A$3:$C$5, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
Denne formelen tilsvarer TOROW-funksjonen med det tredje argumentet satt tilTRUE:
=TOROW(A3:C5, ,TRUE)
Vær oppmerksom på at i motsetning til funksjonen for dynamisk array TOROW, bør disse tradisjonelle formlene legges inn i hver celle der du vil at resultatene skal vises. I vårt tilfelle går den første formelen (etter rad) til E3 og kopieres gjennom M3. Den andre formelen (etter kolonne) lander i E8 og dras gjennom M8.
For at formlene skal kopieres riktig, låser vi området ved hjelp av absolutte referanser ($A$3:$C$5). Et navngitt område vil også gjøre det.
Hvis du har kopiert formlene til flere celler enn nødvendig, en #REF! feilen vises i "ekstra" celler. For å fikse dette, pakk formelen inn i IFERROR-funksjonen slik:
=IFERROR(INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1), "")
Hvordan disse formlene fungerer
Nedenfor er en detaljert oversikt av den første formelen som ordner verdiene etter rad:
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
I hjertet av formelen bruker vi INDEX-funksjonen for å få verdien til en celle basert på dens relative plassering i område.
radnummeret beregnes ved hjelp av denne formelen:
QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1
Ideen er å produsere en repeterende tallsekvens som 1,1 ,1,2,2,2,3,3,3, … der hvert tall gjentas like mange ganger som det er kolonner i kildeområdet. Og her er hvordan vi gjør dette:
QUOTIENT returnerer heltallsdelen av en divisjon.
For teller bruker vi COLUMN(A1)-1, som returnerer en seriell tall fra 0 i den første cellen der formelen er angitt til n (totalt antall verdier i områdetminus 1) i den siste cellen der formelen er angitt. I dette eksemplet har vi 0 i E2 og 8 i M3.
For nevner bruker vi COLUMNS($A$3:$C$5)). Dette returnerer et konstant tall lik antall kolonner i området ditt (3 i vårt tilfelle).
Som et resultat returnerer KVOTIENT-funksjonen 0 i de første 3 cellene (E3:G3), som vi legg til 1, så radnummeret er 1.
For de neste 3 cellene (H3:J3), returnerer QUOTIENT 1, og +1 gir radnummeret 2. Og så videre.
For å beregne kolonnenummeret bygger du en passende tallrekke ved hjelp av MOD-funksjonen:
MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1
Da det er 3 kolonner i vårt utvalg, må rekkefølgen se slik ut : 1,2,3,1,2,3,…
MOD-funksjonen returnerer resten etter divisjon.
I E3, MOD(KOLONNE(A1)-1, KOLONNER($ A$3:$C$5))+
blir
MOD(1-1, 3)+1)
og returnerer 1.
I F3, MOD(COLUMN(B1)-1, COLUMNS($A$3:$C$5))+
blir
MOD(2-1, 3)+1)
og returnerer 2.
Når rad- og kolonnenumrene er etablert, henter INDEX enkelt verdien ved skjæringspunktet mellom raden og kolonnen.
I E3, INDEX($A$3 :$C$5, 1, 1) returnerer en verdi fra 1. rad og 1. kolonne av det refererte området, dvs. fra celle A3.
I F3 returnerer INDEX($A$3:$C$5, 1, 2) en verdi fra 1. rad og 2. kolonne, dvs. fra celle B3.
Og så videre.
Den andre formelen som skanner området etter kolonne, fungerer i enlignende måte. Forskjellen er at vi bruker MOD for å beregne radnummeret og QUOTIENT for å finne ut kolonnenummeret.
TOROW-funksjonen fungerer ikke
Hvis TOROW-funksjonen resulterer i en feil, er det mest sannsynlig er en av disse grunnene:
#NAME? feil
Med de fleste Excel-funksjoner, en #NAME? feil er en klar indikasjon på at funksjonens navn er feilstavet. Med TOROW kan det også bety at funksjonen ikke er tilgjengelig i din Excel. Hvis din Excel-versjon er i annet enn 365, prøv å bruke et TOROW-alternativ.
#NUM-feil
En #NUM-feil indikerer at den returnerte matrisen ikke kan passe inn i en rad. Oftest oppstår dette når du refererer til hele kolonner og/eller rader i stedet for et mindre område.
#SPILL-feil
I de fleste tilfeller antyder en #SPILL-feil at raden der du har skrevet inn formelen har ikke nok tomme celler til å søle resultatene inn i. Hvis nabocellene er visuelt tomme, må du kontrollere at det ikke er mellomrom eller andre tegn som ikke skrives ut. For mer informasjon, se Hva #SPILL-feil betyr i Excel.
Det er slik du bruker TOROW-funksjonen i Excel til å konvertere en 2-dimensjonal matrise eller rekkevidde til en enkelt rad. Jeg takker for at du leser og håper å se deg på bloggen vår neste uke!
Øvningsarbeidsbok for nedlasting
Excel TOROW-funksjon - formeleksempler (.xlsx-fil)