Funkce Excel TOROW pro transformaci rozsahu nebo pole na řádek

  • Sdílet Toto
Michael Brown

Rychlý způsob, jak z rozsahu buněk vytvořit jeden řádek pomocí příkazu TOROW funkce.

Aplikace Microsoft Excel 365 představila několik nových funkcí pro provádění různých manipulací s poli. Pomocí funkce TOROW můžete během okamžiku provádět transformace z rozsahu na řádek. Zde je seznam úloh, které tato nová funkce dokáže provést:

    Funkce TOROW aplikace Excel

    Funkce TOROW v aplikaci Excel slouží k převodu pole nebo rozsahu buněk na jeden řádek.

    Funkce přijímá celkem tři argumenty, z nichž pouze první je povinný.

    TOROW(pole, [ignore], [scan_by_column])

    Kde:

    Pole (povinné) - pole nebo rozsah, který se má transformovat do jednoho řádku.

    Ignorovat (nepovinné) - určuje, zda se mají ignorovat prázdná místa a/nebo chyby. Může nabývat jedné z těchto hodnot:

    • 0 nebo vynecháno (výchozí) - zachovat všechny hodnoty
    • 1 - ignorujte prázdná místa
    • 2 - ignorování chyb
    • 3 - ignorujte prázdná místa a chyby

    Scan_by_column (nepovinné) - určuje způsob skenování pole:

    • FALSE nebo vynecháno (výchozí) - prohledá pole horizontálně po řádcích.
    • TRUE - prohledá pole vertikálně podle sloupců.

    Tipy:

    • Chcete-li převést pole na jeden sloupec, použijte funkci TOCOL.
    • Chcete-li provést obrácenou transformaci z řádku na pole, použijte buď funkci WRAPCOLS pro zabalení do sloupců, nebo funkci WRAPROWS pro zabalení pole do řádků.
    • Chcete-li změnit řádky na sloupce, použijte funkci TRANSPOSE.

    Dostupnost TOROW

    TOROW je nová funkce, která je podporována pouze v aplikaci Excel pro Microsoft 365 (pro Windows a Mac) a Excel pro web.

    Základní vzorec TOROW v aplikaci Excel

    Chcete-li provést jednoduchou transformaci z rozsahu na řádek, použijte vzorec TOROW v jeho základní podobě. K tomu je třeba definovat pouze první argument ( pole ).

    Například pro přeměnu dvourozměrného pole sestávajícího ze 3 sloupců a 3 řádků na jeden řádek je vzorec následující:

    =TOROW(A3:C6)

    Zadáte vzorec pouze do jedné buňky (v našem případě A10) a ten se automaticky rozsype do tolika buněk, kolik je potřeba k uložení všech výsledků. V terminologii Excelu se výstupní rozsah ohraničený tenkým modrým rámečkem nazývá rozsypaný rozsah.

    Jak tento vzorec funguje:

    Nejprve se dodaný rozsah buněk převede na dvourozměrné pole. Všimněte si sloupců oddělených čárkou a řádků oddělených středníkem:

    {"Apple","Banana","Cherry";1,2,3;4,5,6;7,8,9}

    Poté funkce TOROW přečte pole zleva doprava a převede ho na jednorozměrné horizontální pole:

    {"Apple","Banana","Cherry",1,2,3,4,5,6,7,8,9}

    Výsledek přejde do buňky A10, odkud se přelije do sousední buňky vpravo.

    Transformace rozsahu na řádek s ignorováním prázdných míst a chyb

    Funkce TOROW ve výchozím nastavení zachovává všechny hodnoty ze zdrojového pole, včetně prázdných buněk a chyb. Na výstupu se místo prázdných buněk objevují nulové hodnoty, což může být poměrně matoucí.

    Na vyloučit prázdná místa , nastavte ignorovat na 1:

    =TOROW(A3:C5, 1)

    Na ignorovat chyby , nastavte ignorovat argument na 2:

    =TOROW(A3:C5, 2)

    Přeskočení obou, prázdná místa a chyby , použijte 3 pro ignorovat argument:

    =TOROW(A3:C5, 3)

    Následující obrázek ukazuje všechny tři scénáře v akci:

    Čtení pole vodorovně nebo svisle

    Při výchozím chování funkce TOROW zpracovává pole horizontálně zleva doprava. Chcete-li hodnoty prohledávat po sloupcích shora dolů, nastavte 3. argument ( scan_by_column ) na hodnotu TRUE nebo 1.

    Například pro načtení zdrojového rozsahu podle řádků je vzorec v E3 následující:

    =TOROW(A3:C5)

    Pro prohledání rozsahu podle sloupců je vzorec v E8 následující:

    =TOROW(A3:C5, ,TRUE)

    V obou případech mají výsledná pole stejnou velikost, ale hodnoty jsou uspořádány v jiném pořadí.

    Sloučení více rozsahů do jednoho řádku

    Chcete-li spojit několik nesousedících rozsahů do jednoho řádku, nejprve je pomocí funkce HSTACK nebo VSTACK vodorovně nebo svisle poskládejte do jednoho pole a poté pomocí funkce TOROW převeďte kombinované pole na řádek.

    V závislosti na vaší obchodní logice provede úlohu jeden z následujících vzorců.

    Vodorovné stohování polí a převod podle řádků

    S prvním rozsahem v A3:C4 a druhým rozsahem v A8:C9 níže uvedený vzorec poskládá oba rozsahy vodorovně do jednoho pole a pak je převede na řádek, který čte hodnoty zleva doprava. Výsledek je na obrázku níže v poli E3.

    =TOROW(HSTACK(A3:C4, A8:C9))

    Vodorovné stohování polí a převod podle sloupců

    Chcete-li číst naskládané pole svisle shora dolů, nastavte třetí argument příkazu TOROW na hodnotu TRUE, jak je znázorněno na obrázku E5 níže:

    =TOROW(HSTACK(A3:C4, A8:C9), ,TRUE)

    Svislé stohování polí a převod podle řádků

    Pro připojení každého následujícího pole na konec předchozího pole a vodorovné čtení kombinovaného pole se použije vzorec v E12:

    =TOROW(VSTACK(A3:C4, A8:C9))

    Svislé stohování polí a převod podle sloupců

    Pro přidání každého následujícího pole na konec předchozího a vertikální skenování spojeného pole se použije vzorec:

    =TOROW(VSTACK(A3:C4, A8:C9), ,TRUE)

    Pro lepší pochopení logiky si všimněte různého pořadí hodnot ve výsledných polích:

    Výpis jedinečných hodnot z rozsahu do řádku

    Počínaje aplikací Microsoft Excel 2016 máme k dispozici skvělou funkci s názvem UNIQUE, která dokáže snadno získat jedinečné hodnoty z jednoho sloupce nebo řádku. Neumí však pracovat s vícesloupcovými poli. Chcete-li toto omezení překonat, použijte funkce UNIQUE a TOROW společně.

    Například pro získání všech různých (odlišných) hodnot z rozsahu A2:C7 a umístění výsledků do jednoho řádku je vzorec následující:

    =UNIQUE(TOROW(A2:C7), TRUE)

    Protože TOROW vrací jednorozměrné horizontální pole, nastavíme 2. ( by_col ) argumentu UNIQUE na hodnotu TRUE, aby se sloupce vzájemně porovnaly.

    Pokud chcete výsledky seřadit podle abecedy, zabalte výše uvedený vzorec do funkce SORT:

    =SORT(UNIQUE(TOROW(A2:C7), TRUE), , ,TRUE )

    Stejně jako v případě UNIQUE by_col argumentu SORT je také nastaven na hodnotu TRUE.

    Alternativa TOROW pro Excel 365 - 2010

    Ve verzích aplikace Excel, kde není k dispozici funkce TOROW, můžete rozsah převést na jeden řádek pomocí kombinace několika různých funkcí, které fungují ve starších verzích. Tato řešení jsou složitější, ale fungují.

    Pro horizontální skenování rozsahu se použije obecný vzorec:

    INDEX( rozsah , KVOCIENT(SLOUPEC (A1)-1, SLOUPCE( rozsah ))+1, MOD(SLOUPEC(A1)-1, SLOUPCE( rozsah ))+1)

    Pro vertikální skenování rozsahu se použije obecný vzorec:

    INDEX( rozsah , MOD(SLOUPEC(A1)-1, SLOUPCE( rozsah ))+1, KVOCIENT(SLOUPEC (A1)-1, SLOUPCE( rozsah ))+1)

    Pro náš vzorový soubor dat v A3:C5 mají vzorce tento tvar:

    Prohledávání rozsahu po řádcích:

    =INDEX($A$3:$C$5, KVOCIENT(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1, MOD(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1)

    Tento vzorec je alternativou funkce TOROW s 3. argumentem nastaveným na FALSE nebo vynechaným:

    =TOROW(A3:C5)

    Prohledání rozsahu podle sloupců:

    =INDEX($A$3:$C$5, MOD(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1, KVOCIENT(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1)

    Tento vzorec je ekvivalentní funkci TOROW s 3. argumentem nastaveným na hodnotu TRUE:

    =TOROW(A3:C5, ,TRUE)

    Upozorňujeme, že na rozdíl od funkce dynamického pole TOROW je třeba tyto tradiční vzorce zadávat do každé buňky, ve které se mají zobrazit výsledky. V našem případě se první vzorec (podle řádku) dostane do buňky E3 a zkopíruje se přes M3. Druhý vzorec (podle sloupce) se dostane do buňky E8 a přetáhne se přes M8.

    Aby se vzorce správně kopírovaly, uzamkneme rozsah pomocí absolutních odkazů ($A$3:$C$5). Pojmenovaný rozsah také postačí.

    Pokud jste zkopírovali vzorce do více buněk, než bylo potřeba, objeví se v buňkách "navíc" chyba #REF! Chcete-li to napravit, zabalte vzorec do funkce IFERROR takto:

    =IFERROR(INDEX($A$3:$C$5, KVOCIENT(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1, MOD(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1), "")

    Jak tyto vzorce fungují

    Níže je uveden podrobný rozpis prvního vzorce, který seřadí hodnoty podle řádků:

    =INDEX($A$3:$C$5, KVOCIENT(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1, MOD(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1)

    V jádru vzorce používáme funkci INDEX pro získání hodnoty buňky na základě její relativní pozice v rozsahu.

    Na stránkách číslo řádku se vypočítá podle tohoto vzorce:

    KVOCIENT(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1

    Jde o to vytvořit opakující se posloupnost čísel, například 1,1,1,2,2,2,3,3,3, ..., kde se každé číslo opakuje tolikrát, kolik je sloupců ve zdrojovém rozsahu. A tady je návod, jak toho dosáhnout:

    QUOTIENT vrací celočíselnou část dělení.

    Pro čitatel , použijeme COLUMN(A1)-1, který vrátí pořadové číslo od 0 v první buňce, kde je vzorec zadán, do n (celkový počet hodnot v rozsahu mínus 1) v poslední buňce, kde je vzorec zadán. V tomto příkladu máme 0 v E2 a 8 v M3.

    Pro jmenovatel , použijeme COLUMNS($A$3:$C$5)). To vrátí konstantní číslo rovné počtu sloupců v rozsahu (v našem případě 3).

    Výsledkem je, že funkce QUOTIENT vrátí v prvních 3 buňkách (E3:G3) 0, ke které přičteme 1, takže číslo řádku je 1.

    Pro další 3 buňky (H3:J3) QUOTIENT vrátí 1 a +1 dá číslo řádku 2. A tak dále.

    Výpočet číslo sloupce , sestavíte vhodnou posloupnost čísel pomocí funkce MOD:

    MOD(SLOUPEC(A1)-1, SLOUPCE($A$3:$C$5))+1

    Protože v našem rozsahu jsou 3 sloupce, musí posloupnost vypadat takto: 1,2,3,1,2,3,...

    Funkce MOD vrací zbytek po dělení.

    V E3, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+

    se stává

    MOD(1-1, 3)+1)

    a vrátí 1.

    V F3, MOD(COLUMN(B1)-1, COLUMNS($A$3:$C$5))+

    se stává

    MOD(2-1, 3)+1)

    a vrátí 2.

    Jakmile jsou stanovena čísla řádků a sloupců, INDEX snadno načte hodnotu v průsečíku daného řádku a sloupce.

    V E3 vrátí INDEX($A$3:$C$5, 1, 1) hodnotu z 1. řádku a 1. sloupce odkazovaného rozsahu, tj. z buňky A3.

    V buňce F3 vrátí INDEX($A$3:$C$5, 1, 2) hodnotu z 1. řádku a 2. sloupce, tj. z buňky B3.

    A tak dále.

    Druhý vzorec, který prohledává rozsah podle sloupců, funguje podobně. Rozdíl je v tom, že pro výpočet čísla řádku použijeme MOD a pro zjištění čísla sloupce QUOTIENT.

    Nefunguje funkce TOROW

    Pokud funkce TOROW způsobí chybu, bude to s největší pravděpodobností jeden z těchto důvodů:

    #NAME?

    U většiny funkcí aplikace Excel je chyba #NAME? jasným znamením, že název funkce je napsán chybně. U funkce TOROW to může také znamenat, že funkce není ve vašem Excelu k dispozici. Pokud máte jinou verzi aplikace Excel než 365, zkuste použít alternativní funkci TOROW.

    #NUM chyba

    Chyba #NUM znamená, že se vrácené pole nevejde do řádku. Nejčastěji k tomu dochází, když se odkazujete na celé sloupce a/nebo řádky místo na menší rozsah.

    Chyba #SPILL

    Ve většině případů chyba #SPILL naznačuje, že řádek, do kterého jste zadali vzorec, nemá dostatek prázdných buněk, do kterých by bylo možné výsledky přelít. Pokud jsou sousední buňky vizuálně prázdné, zkontrolujte, zda v nich nejsou mezery nebo jiné netisknutelné znaky. Další informace naleznete v části Co znamená chyba #SPILL v aplikaci Excel.

    Takto se v aplikaci Excel používá funkce TOROW k převodu dvourozměrného pole nebo rozsahu na jeden řádek. Děkuji vám za přečtení a doufám, že se příští týden uvidíme na našem blogu!

    Cvičebnice ke stažení

    Funkce Excel TOROW - příklady vzorců (.xlsx soubor)

    Michael Brown je oddaný technologický nadšenec s vášní pro zjednodušování složitých procesů pomocí softwarových nástrojů. S více než desetiletými zkušenostmi v technologickém průmyslu zdokonalil své dovednosti v aplikacích Microsoft Excel a Outlook a také v Tabulkách a Dokumentech Google. Michaelův blog je věnován sdílení jeho znalostí a odborných znalostí s ostatními a poskytuje snadno pochopitelné tipy a návody pro zlepšení produktivity a efektivity. Ať už jste zkušený profesionál nebo začátečník, Michaelův blog nabízí cenné postřehy a praktické rady, jak tyto základní softwarové nástroje co nejlépe využít.