Excel TOCOL-funktionen för att konvertera intervall till en enda kolumn

  • Dela Detta
Michael Brown

Ett enkelt sätt att omvandla en array eller ett intervall till en kolumn med funktionen TOCOL.

Möjligheten att överföra data från kolumner till rader och tvärtom har funnits i Excel under en längre tid. Men att omvandla ett antal celler till en enda kolumn var en svår uppgift att lösa. Nu har det äntligen förändrats. Microsoft har introducerat en ny funktion, kallad TOCOL, som kan omvandla en matris till en kolumn på ett ögonblick. Nedan följer en lista över uppgifter som den nya funktionen enkelt kan lösa.

    Excel TOCOL-funktionen

    TOCOL-funktionen i Excel omvandlar en matris eller ett cellintervall till en enda kolumn.

    Funktionen tar emot tre argument, men endast det första behövs.

    TOCOL(array, [ignorera], [scan_by_column])

    Var:

    Array (krävs) - en matris eller ett intervall som ska omvandlas till en kolumn.

    Ignorera (valfritt) - anger om blanksteg och/eller fel ska ignoreras. Kan vara ett av dessa 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) - bestämmer om matrisen ska skannas horisontellt eller vertikalt:

    • FALSE eller utelämnas (standard) - skannar matrisen rad för rad från vänster till höger.
    • TRUE - skannar matrisen kolumnvis från toppen till botten.

    Tips:

    • Om du vill konvertera en matris till en enda rad använder du funktionen TOROW.
    • Om du vill göra den motsatta omvandlingen från kolumn till array använder du antingen funktionen WRAPCOLS för att omsluta kolumnen eller funktionen WRAPROWS för att omsluta raden.
    • För att transponera en matris från horisontell till vertikal eller vice versa, dvs. ändra rader till kolumner, använd funktionen TRANSPOSE.

    TOCOL tillgänglighet

    TOCOL är en ny funktion som stöds i Excel för Microsoft 365 (för Windows och Mac) och Excel för webben.

    Grundläggande TOCOL-formel för att omvandla ett intervall till en kolumn

    TOCOL-formeln i sin enklaste form kräver endast ett argument - matris Om du till exempel vill placera en tvådimensionell matris som består av 3 kolumner och 4 rader i en enda kolumn är formeln:

    =TOCOL(A2:C5)

    Formeln skrivs bara in i en cell (E2 i det här exemplet) och sprids automatiskt till cellerna nedanför. I Excel kallas resultatet för ett spillområde.

    Hur denna formel fungerar:

    Tekniskt sett omvandlas först intervallet A2:C5 till en tvådimensionell array. Observera de semikolonseparerade raderna och de kommatecknade kolumnerna:

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

    TOCOL-funktionen skannar matrisen från vänster till höger och omvandlar den till en endimensionell vertikal matris:

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

    Resultatet placeras i cell E2, varifrån det sprids till de nedanstående cellerna.

    Hur man använder TOCOL-funktionen i Excel - exempel på formler

    För att få en bättre förståelse för TOCOL-funktionens möjligheter och vilka uppgifter den kan täcka, tar vi en titt på några exempel på formler.

    Omvandla matris till kolumn och ignorera blanksteg och fel

    Som du kanske har märkt i föregående exempel behåller standardformeln TOCOL alla värden från källmatrisen, inklusive tomma celler och fel.

    I den resulterande matrisen representeras tomma celler av nollor, vilket kan vara ganska förvirrande, särskilt om den ursprungliga matrisen har 0 värden. Lösningen är att hoppa över blanketter För detta sätter du det andra argumentet till 1:

    =PROTOKOLL(A2:C5, 1)

    Till ignorera fel , ange 2:a argumentet till 2:

    =PROTOKOLL(A2:C5, 2)

    För att utesluta båda, blanksteg och fel , använd 3 för ignorera argument:

    =PROTOKOLL(A2:C5, 3)

    Skanna matrisen horisontellt eller vertikalt

    Med standardinställningen scan_by_column argumentet (FALSE eller utelämnat), skannar TOCOL-funktionen matrisen horisontellt rad för rad. Om du vill bearbeta värden kolumn för kolumn, sätt detta argument till TRUE eller 1. Till exempel:

    =PROTOKOLL(A2:C5, ,TRUE)

    Observera att i båda fallen är de returnerade matriserna lika stora, men värdena är ordnade i en annan ordning.

    Kombinera flera intervall i en kolumn

    Om du har att göra med flera icke sammanhängande områden kan du först kombinera områdena vertikalt till en enda matris med hjälp av VSTACK-funktionen och sedan använda TOCOL för att omvandla den kombinerade matrisen till en kolumn.

    Om vi antar att det första intervallet är A2:C4 och det andra intervallet är A8:C9, får formeln följande form:

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

    Formeln visar standardbeteendet - den läser de kombinerade matriserna horisontellt från vänster till höger, vilket visas i kolumn E i bilden nedan.

    För att läsa värden vertikalt från topp till botten ställer du in det tredje argumentet i TOCOL till TRUE:

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

    Observera att formeln i det här fallet först returnerar värden från kolumn A i båda matriserna, sedan från kolumn B och så vidare. Anledningen är att TOCOL söker igenom en enda staplad matris, inte de ursprungliga individuella områdena.

    Om affärslogiken kräver att de ursprungliga intervallerna staplas horisontellt i stället för vertikalt, använd HSTACK-funktionen i stället för VSTACK.

    För att lägga varje efterföljande matris till höger om den föregående matrisen och läsa de kombinerade matriserna horisontellt är formeln följande:

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

    För att lägga till varje efterföljande matris till höger om den föregående matrisen och skanna de kombinerade matriserna vertikalt är formeln följande:

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

    Extrahera unika värden från ett intervall med flera kolumner

    Excel-funktionen UNIQUE kan enkelt hitta unika värden i en enda kolumn eller rad och återge unika rader, men den kan inte extrahera unika värden från en matris med flera kolumner. Lösningen är att använda den tillsammans med TOCOL-funktionen.

    Om du till exempel vill extrahera alla olika (distinkta) värden från intervallet A2:C7 är formeln:

    =UNIK(TOCOL(A2:C7))

    Dessutom kan du använda ovanstående formel i funktionen SORT för att ordna den returnerade matrisen i alfabetisk ordning:

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

    Hur du konverterar intervall till kolumn i Excel 365 - 2010

    I Excel-versioner där TOCOL-funktionen inte stöds finns det ett par alternativa sätt att omvandla en rad celler till en kolumn. Dessa lösningar är ganska knepiga, men fungerar ändå.

    Om du vill läsa intervallet radvis:

    INDEX( sortiment , KVOT(RAD(A1)-1, KOLUMNER( sortiment ))+1, MOD(RAD(A1)-1, KOLUMNER( sortiment ))+1)

    Om du vill läsa intervallet per kolumn:

    INDEX( sortiment , MOD(RAD(A1)-1, RADER( sortiment ))+1, KVOT(RAD(A1)-1, RADER( sortiment ))+1)

    För vårt datamaterial är formlerna följande:

    Skanna intervallet horisontellt från vänster till höger :

    =INDEX($A$2:$C$5, KVOT(RAD(A1)-1, KOLUMNER($A$2:$C$5))+1, MOD(RAD(A1)-1, KOLUMNER($A$2:$C$5))+1)

    Denna formel är likvärdig med TOCOL-funktionen med det tredje argumentet inställt på FALSE eller utelämnat:

    =TOCOL(A2:C5)

    Skanna intervallet vertikalt från toppen till botten :

    =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)

    Denna formel är jämförbar med TOCOL-funktionen med det tredje argumentet satt till TRUE:

    =PROTOKOLL(A2:C5, ,TRUE)

    Till skillnad från TOCOL ska de alternativa formlerna skrivas in i varje cell där du vill att resultaten ska visas. I vårt fall ska formlerna skrivas in i cellerna E2 (per rad) och G2 (per kolumn) och kopieras sedan ner till rad 13.

    Om formlerna kopieras till fler rader än vad som behövs visas ett #REF!-fel i de "extra" cellerna. För att förhindra detta kan du bädda in formlerna i IFERROR-funktionen på följande sätt:

    =IFERROR(INDEX($A$2:$C$5, KVOT(RAD(A1)-1, KOLUMNER($A$2:$C$5))+1, MOD(RAD(A1)-1, KOLUMNER($A$2:$C$5))+1), "")

    Observera att för att formlerna ska kopieras korrekt måste vi låsa intervallet med absoluta cellreferenser ($A$2:$C$5). Du kan istället använda ett namngivet intervall.

    Hur dessa formler fungerar

    Nedan följer en detaljerad beskrivning av den första formeln som ordnar cellerna efter rad:

    =INDEX($A$2:$C$5, KVOT(RAD(A1)-1, KOLUMNER($A$2:$C$5))+1, MOD(RAD(A1)-1, KOLUMNER($A$2:$C$5))+1)

    Tanken är att använda INDEX-funktionen för att återge värdet för en viss cell baserat på dess relativa rad- och kolumnnummer i intervallet.

    radnummer beräknas med hjälp av denna kombination:

    KVOT(RAD(A1)-1, KOLUMNER($A$2:$C$5))+1

    QUOTIENT returnerar heltalsdelen av en division.

    För täljare använder du ROW(A1)-1, som returnerar ett löpnummer från 0 i E2 (den första cellen där formeln anges) till 11 i E13 (den sista cellen där formeln anges).

    nämnare brough by COLUMNS($A$2:$C$5)) är konstant och är lika med antalet kolumner i intervallet (3 i vårt fall).

    Om du nu kontrollerar QUOTIENT-resultatet för de tre första cellerna (E2:E4) kommer du att se att det är lika med 0 (eftersom den heltalsmässiga delen av divisionen är noll). Om du lägger till 1 får du radnumret 1.

    För de tre följande cellerna (E5:E5) returnerar QUOTIENT 1, och operationen +1 ger radnumret 2. Och så vidare.

    Med andra ord skapar den här delen av formeln en upprepad talsekvens som 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,... Varje tal upprepas lika många gånger som det finns kolumner i intervallet.

    För att beräkna kolumnnummer Du bygger en lämplig nummersekvens med hjälp av MOD-funktionen:

    MOD(RAD(A1)-1, KOLUMNER($A$2:$C$5))+1

    Eftersom det finns 3 kolumner i vårt intervall (A2:C5) måste sekvensen vara 1,2,3,1,2,3,...

    MOD-funktionen ger återstoden efter divisionen.

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

    blir

    MOD(1-1, 3)+1)

    och returnerar 1.

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

    blir

    MOD(2-1, 3)+1)

    och returnerar 2.

    När rad- och kolumnnumren är fastställda har INDEX inga problem med att hämta det önskade värdet.

    I E2 returnerar INDEX($A$2:$C$5, 1, 1) värdet från första raden och första kolumnen i det refererade intervallet, dvs. från cell A2.

    I E3 returnerar INDEX($A$2:$C$5, 1, 2) värdet från första raden och andra kolumnen, dvs. från cell B2.

    Och så vidare.

    Den andra formeln, som skannar intervallet kolumnvis, fungerar på samma sätt, men skillnaden är att den använder MOD för att få fram radnumret och QUOTIENT för att få fram kolumnnumret.

    TOCOL-funktionen fungerar inte

    Om TOCOL-funktionen ger upphov till ett fel är det troligen en av dessa orsaker:

    TOCOL stöds inte i din Excel

    När du får felmeddelandet #NAME? är det första du ska kontrollera att funktionens namn är korrekt stavat. Om namnet är korrekt men felet kvarstår är funktionen inte tillgänglig i din version av Excel. Överväg i så fall att använda ett TOCOL-alternativ.

    Array är för stor

    Ett #NUM-fel indikerar att matrisen inte får plats i en kolumn. Ett typiskt fall är när du hänvisar till hela kolumner eller rader.

    Det finns inte tillräckligt många tomma celler.

    När ett #SPILL-fel uppstår kontrollerar du att kolumnen där formeln anges har tillräckligt många tomma celler för att fyllas med resultaten. Om cellerna är tomma, kontrollera att det inte finns några mellanslag eller andra tecken som inte är skrivbara i dem. Mer information finns i Hur du åtgärdar #SPILL-felet i Excel.

    Så kan du använda funktionen TOCOL i Excel 365 och alternativa lösningar i tidigare versioner för att omvandla en tvådimensionell matris till en enda kolumn. Tack för att du läste och vi ses på vår blogg nästa vecka!

    Arbetsbok för praktiska övningar

    Excel TOCOL-funktionen - exempel på formler (.xlsx-fil)

    Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.