Indholdsfortegnelse
En hurtig måde at lave en række celler om til en enkelt række ved hjælp af TOROW funktion.
Microsoft Excel 365 har indført flere nye funktioner til at udføre forskellige manipulationer med arrays. Med TOROW kan du udføre transformationer fra række til række på ingen tid. Her er en liste over opgaver, som denne nye funktion kan udføre:
Excel TOROW-funktion
TOROW-funktionen i Excel bruges til at konvertere et array eller en række celler til én række.
Funktionen har i alt tre argumenter, hvoraf kun det første er påkrævet.
TOROW(array, [ignore], [scan_by_column])Hvor:
Array (påkrævet) - et array eller et område, der skal omdannes til en enkelt række.
Ignorer (valgfri) - bestemmer, om der skal ignoreres mellemrum og/eller fejl. Kan have 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 (valgfri) - definerer, hvordan arrayet skal scannes:
- FALSE eller udeladt (standard) - scanner arrayet horisontalt række for række.
- TRUE - scanne arrayet lodret efter kolonne.
Tips:
- Hvis du vil omdanne et array til en enkelt kolonne, skal du bruge funktionen TOCOL.
- For at udføre den omvendte transformation fra række til array skal du enten bruge funktionen WRAPCOLS til at ombryde til kolonner eller funktionen WRAPROWS til at ombryde arrayet til rækker.
- Brug funktionen TRANSPOSE for at omdanne rækker til kolonner.
TOROW tilgængelighed
TOROW er en ny funktion, som kun understøttes i Excel til Microsoft 365 (til Windows og Mac) og Excel til internettet.
Grundlæggende TOROW-formel i Excel
Hvis du vil foretage en simpel transformation fra række til række, skal du bruge TOROW-formlen i dens grundform. Du skal derfor kun definere det første argument ( array ).
For eksempel for at omdanne et todimensionalt array bestående af 3 kolonner og 3 rækker til en enkelt række er formlen:
=TOROW(A3:C6)
Du indtaster formlen i en enkelt celle (A10 i vores tilfælde), og formlen spredes automatisk ud i så mange celler, som der er brug for til at rumme alle resultaterne. I Excel kaldes outputområdet, der er omgivet af en tynd blå kant, for et spildområde.
Sådan fungerer denne formel:
Først omdannes en række celler til et todimensionalt array. Bemærk de kommategrænsede kolonner og semikolonseparerede rækker:
{"Apple","Banana","Cherry";1,2,3;4,5,6;7,8,9}
Derefter læser TOROW-funktionen arrayet fra venstre mod højre og konverterer det til et endimensionalt horisontalt array:
{"Apple","Banana","Cherry",1,2,3,4,5,6,7,8,9}
Resultatet går til celle A10, hvorfra det løber over i nabocellen til højre.
Omdanne række til række uden at tage hensyn til tomme felter og fejl
Som standard beholder TOROW-funktionen alle værdierne fra kildematrixen, herunder tomme celler og fejl. I output vises nulværdier i stedet for tomme celler, hvilket kan være ret forvirrende.
Til udelukke tomme felter , indstille den ignorere argument til 1:
=TOROW(A3:C5, 1)
Til ignorere fejl , indstille den ignorere argument til 2:
=TOROW(A3:C5, 2)
Hvis du vil springe begge dele over, blanktegn og fejl , bruge 3 til den ignorere argument:
=TOROW(A3:C5, 3)
Billedet nedenfor viser alle tre scenarier i aktion:
Læs array horisontalt eller vertikalt
Med standardadfærden behandler TOROW-funktionen arrayet horisontalt fra venstre mod højre. Hvis du vil scanne værdierne i kolonnevis fra top til bund, skal du indstille det tredje argument ( scan_by_kolonne ) til TRUE eller 1.
For at læse kildeområdet pr. række er formlen i E3 f.eks:
=TOROW(A3:C5)
For at scanne intervallet efter kolonne er formlen i E8 følgende:
=TOROW(A3:C5, ,TRUE)
I begge tilfælde er de resulterende arrays af samme størrelse, men værdierne er arrangeret i en anden rækkefølge.
Flette flere intervaller i én række
Hvis du vil kombinere flere ikke-tilstødende intervaller til en enkelt række, skal du først stable dem horisontalt eller vertikalt til et enkelt array ved hjælp af henholdsvis HSTACK eller VSTACK og derefter bruge TOROW-funktionen til at konvertere det kombinerede array til en række.
Afhængigt af din forretningslogik vil en af følgende formler udføre opgaven.
Stak arrays horisontalt og konverter efter række
Med det første område i A3:C4 og det andet område i A8:C9 vil nedenstående formel stable de to områder horisontalt i et enkelt array og derefter omdanne det til en række, der læser værdierne fra venstre mod højre. Resultatet er i E3 i billedet nedenfor.
=TOROW(HSTACK(A3:C4, A8:C9))
Stak arrays horisontalt og konverter efter kolonne
For at læse det stablede array lodret fra top til bund skal du indstille det tredje argument i TOROW til TRUE som vist i E5 i billedet nedenfor:
=TOROW(HSTACK(A3:C4, A8:C9), ,TRUE)
Stak arrays lodret og konverter efter række
For at føje hvert efterfølgende array til bunden af det foregående array og læse det kombinerede array horisontalt er formlen i E12 følgende:
=TOROW(VSTACK(A3:C4, A8:C9))
Stak arrays lodret og konverter efter kolonne
For at tilføje hvert efterfølgende array til bunden af det foregående og scanne det kombinerede array lodret, er formlen:
=TOROW(VSTACK(A3:C4, A8:C9), ,TRUE)
For at forstå logikken bedre kan du se den forskellige rækkefølge af værdierne i de resulterende arrays:
Udtrække unikke værdier fra et område til en række
Fra og med Microsoft Excel 2016 har vi en fantastisk funktion, UNIQUE, som nemt kan få unikke værdier fra en enkelt kolonne eller række. Den kan dog ikke håndtere arrays med flere kolonner. For at overvinde denne begrænsning skal du bruge UNIQUE- og TOROW-funktionerne sammen.
For at udtrække alle de forskellige (særskilte) værdier fra intervallet A2:C7 og placere resultaterne i én række, er formlen f.eks:
=UNIQUE(TOROW(A2:C7), TRUE)
Da TOROW returnerer et endimensionalt horisontalt array, sætter vi den 2. ( by_col ) argumentet UNIQUE til TRUE for at sammenligne kolonnerne med hinanden.
Hvis du vil have resultaterne ordnet i alfabetisk rækkefølge, skal du indpakke ovenstående formel i funktionen SORT:
=SORT(UNIK(TOROW(A2:C7), SAND), , , ,SAND )
Ligesom med UNIQUE kan by_col argumentet i SORT er også sat til TRUE.
TOROW alternativ til Excel 365 - 2010
I Excel-versioner, hvor TOROW-funktionen ikke er tilgængelig, kan du omdanne et område til en enkelt række ved hjælp af en kombination af et par forskellige funktioner, der fungerer i ældre versioner. Disse løsninger er mere komplekse, men de virker.
For at scanne området horisontalt er den generelle formel:
INDEX( rækkevidde , KVOTIENT(KOLONNE (A1)-1, KOLONNER( rækkevidde ))+1, MOD(KOLONNE(A1)-1, KOLONNER( rækkevidde ))+1)For at scanne området lodret er den generiske formel:
INDEX( rækkevidde , MOD(KOLONNE(A1)-1, KOLONNER( rækkevidde ))+1, KVOTIENT(KOLONNE (A1)-1, KOLONNER( rækkevidde ))+1)For vores eksempeldatasæt i A3:C5 har formlerne denne form:
Hvis du vil scanne området række for række:
=INDEX($A$3:$C$5, KVOTIENTEN(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1, MOD(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1)
Denne formel er et alternativ til TOROW-funktionen, hvor det tredje argument er sat til FALSK eller udeladt:
=TOROW(A3:C5)
Hvis du vil scanne området efter kolonne:
=INDEX($A$3:$C$5, MOD(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1, KVOTIENTEN(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1)
Denne formel svarer til TOROW-funktionen med det tredje argument sat til TRUE:
=TOROW(A3:C5, ,TRUE)
Bemærk, at i modsætning til den dynamiske arrayfunktion TOROW skal disse traditionelle formler indtastes i hver celle, hvor du ønsker, at resultaterne skal vises. I vores tilfælde skal den første formel (efter række) indtastes i E3 og kopieres gennem M3. Den anden formel (efter kolonne) skal indtastes i E8 og trækkes gennem M8.
For at formlerne kan kopieres korrekt, låser vi området ved hjælp af absolutte referencer ($A$3:$C$5). Et navngivet område er også tilstrækkeligt.
Hvis du har kopieret formlerne til flere celler end nødvendigt, vises en #REF!-fejl i de "ekstra" celler. Du kan rette dette ved at indpakke din formel i IFERROR-funktionen på følgende måde:
=IFERROR(INDEX($A$3:$C$5, KVOTIENT(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1, MOD(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1), ""))
Sådan fungerer disse formler
Nedenfor er en detaljeret oversigt over den første formel, der ordner værdierne efter række:
=INDEX($A$3:$C$5, KVOTIENTEN(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1, MOD(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1)
I formlen bruger vi INDEX-funktionen til at få værdien af en celle baseret på dens relative position i intervallet.
række nummer beregnes ved hjælp af denne formel:
KVOTIENT(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1
Ideen er at producere en gentagende talsekvens som f.eks. 1,1,1,1,2,2,2,2,3,3,3,3, ... hvor hvert tal gentages lige så mange gange, som der er kolonner i kildeområdet. Og sådan gør vi det:
QUOTIENT returnerer den hele taldel af en division.
Til tæller , bruger vi COLUMN(A1)-1, som returnerer et løbenummer fra 0 i den første celle, hvor formlen er indtastet, til n (det samlede antal værdier i intervallet minus 1) i den sidste celle, hvor formlen er indtastet. I dette eksempel har vi 0 i E2 og 8 i M3.
Til nævner bruger vi COLUMNS($A$3:$C$5))). Dette returnerer et konstant tal svarende til antallet af kolonner i dit område (3 i vores tilfælde).
Som følge heraf returnerer funktionen QUOTIENT 0 i de første 3 celler (E3:G3), hvortil vi tilføjer 1, så rækkeantallet er 1.
For de næste 3 celler (H3:J3) returnerer QUOTIENT 1, og +1 giver række nummer 2. Og så videre.
Til beregning af den kolonnenummer , kan du opbygge en passende talsekvens ved hjælp af MOD-funktionen:
MOD(KOLONNE(A1)-1, KOLONNER($A$3:$C$5))+1
Da der er 3 kolonner i vores rækkevidde, skal sekvensen se således ud: 1,2,3,1,2,3,1,2,3,...
MOD-funktionen returnerer resten efter division.
I E3, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+
bliver
MOD(1-1, 3)+1)
og returnerer 1.
I F3, MOD(COLUMN(B1)-1, COLUMNS($A$3:$C$5))+
bliver
MOD(2-1, 3)+1)
og returnerer 2.
Når række- og kolonnumrene er fastlagt, kan INDEX nemt hente værdien i skæringspunktet mellem den pågældende række og kolonne.
I E3 returnerer INDEX($A$3:$C$5, 1, 1) en værdi fra den første række og den første kolonne i det refererede område, dvs. fra celle A3.
I F3 returnerer INDEX($A$3:$C$5, 1, 2) en værdi fra den første række og den anden kolonne, dvs. fra celle B3.
Og så videre.
Den anden formel, der scanner intervallet efter kolonne, fungerer på samme måde. Forskellen er, at vi bruger MOD til at beregne rækkeantallet og QUOTIENT til at finde ud af kolonneantallet.
TOROW-funktionen fungerer ikke
Hvis TOROW-funktionen resulterer i en fejl, er det højst sandsynligt en af disse årsager:
#NAME? fejl
Med de fleste Excel-funktioner er en #NAME? fejl en klar indikation af, at funktionens navn er stavet forkert. Med TOROW kan det også betyde, at funktionen ikke er tilgængelig i din Excel. Hvis din Excel-version er en anden end 365, skal du prøve at bruge et TOROW-alternativ.
#NUM fejl
En #NUM-fejl angiver, at det returnerede array ikke kan passe ind i en række. Det sker oftest, når du henviser til hele kolonner og/eller rækker i stedet for et mindre område.
#SPILL fejl
I de fleste tilfælde tyder en #SPILL-fejl på, at rækken, hvor du har indtastet formlen, ikke har nok tomme celler til at spilde resultaterne i. Hvis de tilstødende celler er tomme, skal du sikre dig, at der ikke er mellemrum eller andre tegn, der ikke kan skrives, i dem. Du kan finde flere oplysninger under Hvad #SPILL-fejl betyder i Excel.
Sådan bruger du TOROW-funktionen i Excel til at konvertere et 2-dimensionelt array eller et område til en enkelt række. Tak for din læsning og håber at se dig på vores blog i næste uge!
Arbejdsbog til download
Excel TOROW-funktion - eksempler på formler (.xlsx-fil)