Innehållsförteckning
Ett snabbt sätt att omvandla ett antal celler till en enda rad med hjälp av TOROW funktion.
Microsoft Excel 365 har infört flera nya funktioner för att utföra olika manipulationer med matriser. Med TOROW kan du utföra omvandlingar från intervall till rad på nolltid. Här är en lista över uppgifter som den här nya funktionen kan utföra:
Excel TOROW-funktionen
TOROW-funktionen i Excel används för att omvandla en matris eller ett område av celler till en rad.
Funktionen tar totalt tre argument, varav endast det första behövs.
TOROW(array, [ignore], [scan_by_column])Var:
Array (krävs) - en matris eller ett intervall som ska omvandlas till en enda rad.
Ignorera (valfritt) - bestämmer om blanksteg och/eller fel ska ignoreras. Kan ha ett av följande värden:
- 0 eller utelämnas (standard) - behåller alla värden
- 1 - ignorerar blanksteg
- 2 - ignorera fel
- 3 - ignorera blanksteg och fel
Scan_by_kolumn (valfritt) - anger hur matrisen ska skannas:
- FALSE eller utelämnas (standard) - skannar matrisen horisontellt rad för rad.
- TRUE - skannar matrisen vertikalt kolumnvis.
Tips:
- Om du vill omvandla en array till en enda kolumn använder du funktionen TOCOL.
- Om du vill utföra den omvända omvandlingen från rad till array använder du antingen funktionen WRAPCOLS för att omsluta till kolumner eller funktionen WRAPROWS för att omsluta arrayen till rader.
- För att omvandla rader till kolumner använder du funktionen TRANSPOSE.
Tillgänglighet till TOROW
TOROW är en ny funktion som endast stöds i Excel för Microsoft 365 (för Windows och Mac) och Excel för webben.
Grundläggande TOROW-formel i Excel
För att göra en enkel omvandling från intervall till rad använder du TOROW-formeln i dess grundform. För detta behöver du bara definiera det första argumentet ( matris ).
För att till exempel omvandla en tvådimensionell matris som består av 3 kolumner och 3 rader till en enda rad är formeln följande:
=TOROW(A3:C6)
Du anger formeln i en enda cell (A10 i vårt fall) och den sprids automatiskt till så många celler som behövs för att hålla alla resultat. I Excel kallas det utdataområde som är omgivet av en tunn blå kant för ett spillområde.
Hur denna formel fungerar:
Först omvandlas ett angivet intervall av celler till en tvådimensionell matris. Lägg märke till de kommatecknade kolumnerna och de semikolonseparerade raderna:
{"Apple","Banana","Cherry";1,2,3;4,5,6;7,8,9}
Därefter läser TOROW-funktionen matrisen från vänster till höger och omvandlar den till en endimensionell horisontell matris:
{"Apple","Banana","Cherry",1,2,3,4,5,6,7,8,9}
Resultatet hamnar i cell A10, varifrån det hamnar i den angränsande cellen till höger.
Omvandla intervall till rad och ignorera blanksteg och fel.
Som standard behåller TOROW-funktionen alla värden från källmatrisen, inklusive tomma celler och fel. I resultatet visas nollvärden i stället för tomma celler, vilket kan vara ganska förvirrande.
Till utesluta blanketter , ställa in den ignorera argumentet till 1:
=TOROW(A3:C5, 1)
Till ignorera fel , ställa in den ignorera argument till 2:
=TOROW(A3:C5, 2)
För att hoppa över båda, blanksteg och fel , använd 3 för ignorera argument:
=TOROW(A3:C5, 3)
Bilden nedan visar alla tre scenarierna i praktiken:
Läsa matrisen horisontellt eller vertikalt
Med standardbeteendet bearbetar TOROW-funktionen matrisen horisontellt från vänster till höger. Om du vill skanna värdena i kolumner från topp till botten ställer du in det tredje argumentet ( scan_by_column ) till TRUE eller 1.
Om du till exempel vill läsa källområdet per rad är formeln i E3 följande:
=TOROW(A3:C5)
För att skanna intervallet per kolumn är formeln i E8:
=TOROW(A3:C5, ,TRUE)
I båda fallen är de resulterande matriserna lika stora, men värdena är ordnade i en annan ordning.
Slå ihop flera intervall till en rad
Om du vill kombinera flera icke angränsande områden till en enda rad staplar du dem först horisontellt eller vertikalt till en enda matris med hjälp av HSTACK respektive VSTACK och använder sedan TOROW-funktionen för att omvandla den kombinerade matrisen till en rad.
Beroende på din affärslogik kommer en av följande formler att utföra uppgiften.
Stapla matriser horisontellt och konvertera radvis
Med det första intervallet i A3:C4 och det andra intervallet i A8:C9 staplar nedanstående formel de två intervallerna horisontellt till en enda matris och omvandlar den sedan till en rad som läser värdena från vänster till höger. Resultatet visas i E3 i bilden nedan.
=TOROW(HSTACK(A3:C4, A8:C9))
Stapla matriser horisontellt och konvertera kolumnvis
För att läsa den staplade matrisen vertikalt uppifrån och ner ställer du in det tredje argumentet i TOROW till TRUE, vilket visas i E5 i bilden nedan:
=TOROW(HSTACK(A3:C4, A8:C9), ,TRUE)
Stapla matriser vertikalt och konvertera radvis
För att lägga varje efterföljande matris till botten av den föregående matrisen och läsa den kombinerade matrisen horisontellt är formeln i E12 följande:
=TOROW(VSTACK(A3:C4, A8:C9))
Stapla matriser vertikalt och konvertera kolumnvis
För att lägga varje efterföljande matris till botten av den föregående och skanna den kombinerade matrisen vertikalt är formeln följande:
=TOROW(VSTACK(A3:C4, A8:C9), ,TRUE)
För att bättre förstå logiken kan du observera den olika ordningen på värdena i de resulterande matriserna:
Extrahera unika värden från ett intervall till en rad
Från och med Microsoft Excel 2016 har vi en underbar funktion, UNIQUE, som enkelt kan få fram unika värden från en enda kolumn eller rad. Den kan dock inte hantera matriser med flera kolumner. För att övervinna den här begränsningen kan du använda UNIQUE- och TOROW-funktionerna tillsammans.
Om du till exempel vill extrahera alla olika (distinkta) värden från intervallet A2:C7 och placera resultaten på en rad är formeln följande:
=UNIQUE(TOROW(A2:C7), TRUE)
Eftersom TOROW returnerar en endimensionell horisontell matris ställer vi in den andra ( by_col ) argumentet UNIQUE till TRUE för att jämföra kolumnerna med varandra.
Om du vill att resultaten ska ordnas i alfabetisk ordning kan du använda ovanstående formel i funktionen SORT:
=SORT(UNIK(TOROW(A2:C7), SANT), , ,SANT )
Precis som för UNIQUE kan by_col argumentet för SORT också sätts till TRUE.
TOROW alternativ för Excel 365 - 2010
I Excel-versioner där TOROW-funktionen inte finns tillgänglig kan du omvandla ett intervall till en enda rad med hjälp av en kombination av några olika funktioner som fungerar i äldre versioner. Dessa lösningar är mer komplicerade, men de fungerar.
För att skanna området horisontellt är den generiska formeln:
INDEX( sortiment , KVOT(KOLUMN (A1)-1, KOLUMNER( sortiment ))+1, MOD(KOLUMN(A1)-1, KOLUMNER( sortiment ))+1)För att skanna området vertikalt är den generiska formeln:
INDEX( sortiment , MOD(KOLUMN(A1)-1, KOLUMNER( sortiment ))+1, KVOT(KOLUMN (A1)-1, KOLUMNER( sortiment ))+1)För vårt exempel på datasetet i A3:C5 har formlerna denna form:
Om du vill skanna intervallet rad för rad:
=INDEX($A$3:$C$5, KVOT(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1, MOD(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1)
Denna formel är ett alternativ till TOROW-funktionen med det tredje argumentet inställt på FALSE eller utelämnat:
=TOROW(A3:C5)
Om du vill skanna intervallet kolumnvis:
=INDEX($A$3:$C$5, MOD(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1, KVOT(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1)
Denna formel är likvärdig med TOROW-funktionen med det tredje argumentet satt till TRUE:
=TOROW(A3:C5, ,TRUE)
Observera att till skillnad från TOROW-funktionen för dynamiska matriser ska dessa traditionella formler skrivas in i varje cell där du vill att resultaten ska visas. I vårt fall hamnar den första formeln (per rad) i E3 och kopieras genom M3. Den andra formeln (per kolumn) hamnar i E8 och dras genom M8.
För att formlerna ska kopieras korrekt låser vi intervallet med absoluta referenser ($A$3:$C$5). Ett namngivet intervall fungerar också.
Om du har kopierat formlerna till fler celler än vad som behövs visas ett #REF!-fel i de "extra" cellerna. För att åtgärda detta kan du omsluta formeln med IFERROR-funktionen på följande sätt:
=IFERROR(INDEX($A$3:$C$5, KVOT(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1, MOD(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1), "")
Hur dessa formler fungerar
Nedan följer en detaljerad beskrivning av den första formeln som ordnar värdena per rad:
=INDEX($A$3:$C$5, KVOT(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1, MOD(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1)
I formelns kärna använder vi INDEX-funktionen för att få fram värdet för en cell baserat på dess relativa position i intervallet.
radnummer beräknas med hjälp av denna formel:
KVOT(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1
Tanken är att skapa en upprepad talföljd som 1,1,1,1,2,2,2,2,3,3,3, ... där varje tal upprepas lika många gånger som det finns kolumner i källområdet. Så här gör vi:
QUOTIENT returnerar heltalsdelen av en division.
För täljare använder vi COLUMN(A1)-1, som returnerar ett löpnummer från 0 i den första cellen där formeln skrivs in till n (det totala antalet värden i intervallet minus 1) i den sista cellen där formeln har angetts. I det här exemplet har vi 0 i E2 och 8 i M3.
För nämnare använder vi COLUMNS($A$3:$C$5)). Detta returnerar ett konstant tal som är lika med antalet kolumner i intervallet (3 i vårt fall).
Därför returnerar funktionen QUOTIENT 0 i de tre första cellerna (E3:G3), till vilka vi lägger till 1, så att radnumret blir 1.
För de tre följande cellerna (H3:J3) ger QUOTIENT 1, och +1 ger radnumret 2. Och så vidare.
För att beräkna kolumnnummer Du bygger en lämplig nummersekvens med hjälp av MOD-funktionen:
MOD(KOLUMN(A1)-1, KOLUMNER($A$3:$C$5))+1
Eftersom det finns tre kolumner i vårt intervall måste sekvensen se ut som: 1,2,3,1,2,3,...
MOD-funktionen ger återstoden efter divisionen.
I E3, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+
blir
MOD(1-1, 3)+1)
och returnerar 1.
I F3, MOD(COLUMN(B1)-1, COLUMNS($A$3:$C$5))+
blir
MOD(2-1, 3)+1)
och returnerar 2.
När rad- och kolumnnumren är fastställda hämtar INDEX enkelt värdet i skärningspunkten mellan raden och kolumnen.
I E3 returnerar INDEX($A$3:$C$5, 1, 1) ett värde från första raden och första kolumnen i det refererade intervallet, dvs. från cell A3.
I F3 returnerar INDEX($A$3:$C$5, 1, 2) ett värde från första raden och andra kolumnen, dvs. från cell B3.
Och så vidare.
Den andra formeln som skannar intervallet per kolumn fungerar på samma sätt. Skillnaden är att vi använder MOD för att beräkna radnumret och QUOTIENT för att räkna ut kolumnnumret.
TOROW-funktionen fungerar inte
Om TOROW-funktionen resulterar i ett fel är det troligen en av dessa orsaker:
#NAME? fel
För de flesta Excel-funktioner är felet #NAME? en tydlig indikation på att funktionens namn är felstavat. För TOROW kan det också betyda att funktionen inte finns tillgänglig i Excel. Om du har en annan Excel-version än 365 kan du prova att använda ett TOROW-alternativ.
#NUM fel
Ett #NUM-fel indikerar att den returnerade matrisen inte får plats i en rad. Oftast inträffar detta när du hänvisar till hela kolumner och/eller rader i stället för ett mindre intervall.
#SPILL fel
I de flesta fall tyder ett #SPILL-fel på att raden där du har angett formeln inte har tillräckligt många tomma celler för att sprida resultaten till. Om de angränsande cellerna är tomma, kontrollera att det inte finns några mellanslag eller andra tecken som inte är skrivbara i dem. Mer information finns i Vad #SPILL-fel betyder i Excel.
Så här använder du TOROW-funktionen i Excel för att konvertera en tvådimensionell matris eller ett område till en enda rad. Tack för att du läste och hoppas att vi ses på vår blogg nästa vecka!
Arbetsbok för övning för nedladdning
Excel TOROW-funktionen - exempel på formler (.xlsx-fil)