Obsah
Snadný způsob transformace pole nebo rozsahu na sloupec pomocí funkce TOCOL.
Možnost transponovat data ze sloupců do řádků a obráceně je v Excelu již delší dobu. Převod řady buněk do jednoho sloupce byl však složitý úkol. Nyní se to konečně mění. Microsoft představil novou funkci s názvem TOCOL, která dokáže v mžiku provést transformaci pole na sloupec. Níže uvádíme seznam úloh, které tato nová funkce dokáže snadno vyřešit.
Funkce Excel TOCOL
Funkce TOCOL v aplikaci Excel převede pole nebo rozsah buněk na jeden sloupec.
Funkce přijímá tři argumenty, ale pouze první z nich je povinný.
TOCOL(pole, [ignore], [scan_by_column])Kde:
Pole (povinné) - pole nebo rozsah, který se má transformovat do sloupce.
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, zda se pole bude skenovat horizontálně nebo vertikálně:
- FALSE nebo vynecháno (výchozí) - prohledá pole po řádcích zleva doprava.
- TRUE - prohledá pole po sloupcích shora dolů.
Tipy:
- Chcete-li převést pole na jeden řádek, použijte funkci TOROW.
- Chcete-li provést opačnou transformaci sloupce na pole, použijte buď funkci WRAPCOLS pro zabalení po sloupcích, nebo funkci WRAPROWS pro zabalení po řádcích.
- Chcete-li transponovat pole z vodorovného na svislé nebo naopak, tj. změnit řádky na sloupce, použijte funkci TRANSPOSE.
Dostupnost TOCOL
TOCOL je nová funkce, která je podporována v aplikaci Excel pro Microsoft 365 (pro Windows a Mac) a Excel pro web.
Základní vzorec TOCOL pro transformaci rozsahu na sloupec
Vzorec TOCOL ve své nejjednodušší podobě vyžaduje pouze jeden argument - pole Například pro umístění dvourozměrného pole sestávajícího ze 3 sloupců a 4 řádků do jednoho sloupce je vzorec následující:
=TOCOL(A2:C5)
Vzorec je zadán pouze v jedné buňce (v tomto příkladu E2) a automaticky se přelije do buněk níže. Z hlediska Excelu se výsledek nazývá přelévací rozsah.
Jak tento vzorec funguje:
Technicky je rozsah A2:C5 nejprve převeden na dvourozměrné pole. Všimněte si řádků oddělených středníkem a sloupců oddělených čárkou:
{"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}
Funkce TOCOL prohledá pole zleva doprava a převede je na jednorozměrné vertikální pole:
{"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}
Výsledek se umístí do buňky E2, odkud se přelije do následujících buněk.
Jak používat funkci TOCOL v aplikaci Excel - příklady vzorců
Abychom lépe pochopili možnosti funkce TOCOL a úlohy, které může pokrýt, podívejme se na několik příkladů vzorců.
Transformace pole do sloupce s ignorováním prázdných míst a chyb
Jak jste si mohli všimnout v předchozím příkladu, výchozí vzorec TOCOL zachovává všechny hodnoty ze zdrojového pole, včetně prázdných buněk a chyb.
Ve výsledném poli jsou prázdné buňky reprezentovány nulami, což může být docela matoucí, zejména pokud má původní pole hodnoty 0. Řešením je následující postup přeskočit prázdná místa Pro tento účel nastavte druhý argument na hodnotu 1:
=TOCOL(A2:C5, 1)
Na ignorovat chyby , nastavte druhý argument na hodnotu 2:
=TOCOL(A2:C5, 2)
Vyloučit obojí, prázdná místa a chyby , použijte 3 pro ignorovat argument:
=TOCOL(A2:C5, 3)
Skenování pole vodorovně nebo svisle
S výchozím nastavením scan_by_column (FALSE nebo vynecháno), funkce TOCOL prohledá pole horizontálně po řádcích. Chcete-li zpracovávat hodnoty po sloupcích, nastavte tento argument na hodnotu TRUE nebo 1. Například:
=TOCOL(A2:C5, ,TRUE)
Všimněte si, že v obou případech mají vrácená pole stejnou velikost, ale hodnoty jsou uspořádány v jiném pořadí.
Spojení více rozsahů do jednoho sloupce
Pokud máte co do činění s několika nesousedícími rozsahy, můžete je nejprve pomocí funkce VSTACK vertikálně spojit do jediného pole a poté pomocí funkce TOCOL toto spojené pole transformovat do sloupce.
Za předpokladu, že první rozsah je A2:C4 a druhý rozsah je A8:C9, má vzorec tento tvar:
=TOCOL(VSTACK(A2:C4, A8:C9))
Tento vzorec demonstruje výchozí chování - čte kombinovaná pole vodorovně zleva doprava, jak je znázorněno ve sloupci E na obrázku níže.
Chcete-li číst hodnoty vertikálně shora dolů, nastavte 3. argument TOCOL na hodnotu TRUE:
=TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)
Věnujte prosím pozornost tomu, že v tomto případě vzorec nejprve vrátí hodnoty ze sloupce A obou polí, poté ze sloupce B atd. Důvodem je to, že TOCOL prohledává jedno poskládané pole, nikoliv původní jednotlivé rozsahy.
Pokud vaše obchodní logika vyžaduje skládání původních rozsahů spíše horizontálně než vertikálně, použijte místo funkce VSTACK funkci HSTACK.
Pro připojení každého následujícího pole vpravo od předchozího pole a vodorovné čtení kombinovaných polí se použije vzorec:
=TOCOL(HSTACK(A2:C4, A8:C10))
Pro přidání každého následujícího pole vpravo od předchozího pole a vertikální skenování spojených polí se použije vzorec:
=TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)
Výpis jedinečných hodnot z rozsahu více sloupců
Funkce Excel UNIQUE dokáže snadno najít unikáty v jednom sloupci nebo řádku a vrátit unikátní řádky, ale nedokáže získat unikátní hodnoty z pole o více sloupcích. Řešením je použít ji společně s funkcí TOCOL.
Například pro získání všech různých (odlišných) hodnot z rozsahu A2:C7 se použije vzorec:
=UNIKÁTNÍ(TOCOL(A2:C7))
Navíc můžete výše uvedený vzorec zabalit do funkce SORT, abyste vrácené pole uspořádali podle abecedy:
=SORT(UNIQUE(TOCOL(A2:C7)))
Jak převést rozsah na sloupec v aplikaci Excel 365 - 2010
Ve verzích aplikace Excel, kde není podporována funkce TOCOL, existuje několik alternativních způsobů, jak transformovat rozsah buněk do sloupce. Tato řešení jsou poměrně složitá, ale přesto fungují.
Čtení rozsahu po řádcích:
INDEX( rozsah , KVOCIENT(ŘÁDEK(A1)-1, SLOUPCE( rozsah ))+1, MOD(ŘÁDEK(A1)-1, SLOUPCE( rozsah ))+1)Čtení rozsahu podle sloupců:
INDEX( rozsah , MOD(ŘÁDEK(A1)-1, ŘÁDKY( rozsah ))+1, KVOCIENT(ŘÁDEK(A1)-1, ŘÁDKY( rozsah ))+1)Pro náš vzorový soubor dat jsou vzorce následující:
Skenování rozsahu vodorovně zleva doprava :
=INDEX($A$2:$C$5, KVOCIENT(ŘÁDEK(A1)-1, SLOUPCE($A$2:$C$5))+1, MOD(ŘÁDEK(A1)-1, SLOUPCE($A$2:$C$5))+1)
Tento vzorec je ekvivalentní funkci TOCOL s 3. argumentem nastaveným na FALSE nebo vynechaným:
=TOCOL(A2:C5)
Skenování rozsahu vertikálně shora dolů :
=INDEX($A$2:$C$5, MOD(ŘÁDEK(A1)-1, ŘÁDKY($A$2:$C$5))+1, KVOCIENT(ŘÁDEK(A1)-1, ŘÁDKY($A$2:$C$5))+1)
Tento vzorec je srovnatelný s funkcí TOCOL s třetím argumentem nastaveným na hodnotu TRUE:
=TOCOL(A2:C5, ,TRUE)
Na rozdíl od TOCOL by se alternativní vzorce měly zadávat do každé buňky, kde se mají zobrazit výsledky. V našem případě se vzorce dostanou do buněk E2 (podle řádku) a G2 (podle sloupce) a pak se zkopírují dolů do řádku 13.
Pokud se vzorce zkopírují do více řádků, než je potřeba, objeví se v buňkách "navíc" chyba #REF! Aby k tomu nedošlo, můžete vzorce vnořit do funkce IFERROR takto:
=IFERROR(INDEX($A$2:$C$5, KVOCIENT(ŘÁDEK(A1)-1, SLOUPCE($A$2:$C$5))+1, MOD(ŘÁDEK(A1)-1, SLOUPCE($A$2:$C$5))+1), "")
Všimněte si, že aby se vzorce správně kopírovaly, zamkneme rozsah pomocí absolutních odkazů na buňky ($A$2:$C$5). Místo toho můžete použít pojmenovaný rozsah.
Jak tyto vzorce fungují
Níže je uveden podrobný rozpis prvního vzorce, který uspořádává buňky podle řádků:
=INDEX($A$2:$C$5, KVOCIENT(ŘÁDEK(A1)-1, SLOUPCE($A$2:$C$5))+1, MOD(ŘÁDEK(A1)-1, SLOUPCE($A$2:$C$5))+1)
Jde o to, aby funkce INDEX vrátila hodnotu určité buňky na základě jejího relativního čísla řádku a sloupce v rozsahu.
Na stránkách číslo řádku se vypočítá touto kombinací:
KVOCIENT(ŘÁDEK(A1)-1, SLOUPCE($A$2:$C$5))+1
QUOTIENT vrací celočíselnou část dělení.
Pro čitatel , použijete ROW(A1)-1, který vrátí pořadové číslo od 0 v buňce E2 (první buňka, do které byl vzorec zadán) do 11 v buňce E13 (poslední buňka, do které byl vzorec zadán).
Na stránkách jmenovatel přeneseno pomocí COLUMNS($A$2:$C$5)) je konstantní a rovná se počtu sloupců ve vašem rozsahu (v našem případě 3).
Pokud nyní zkontrolujete výsledek QUOTIENT pro první 3 buňky (E2:E4), zjistíte, že je roven 0 (protože celočíselná část dělení je nulová). Přičtením 1 získáte číslo řádku 1.
Pro další 3 buňky (E5:E5) vrátí QUOTIENT hodnotu 1 a operace +1 přinese číslo řádku 2. A tak dále.
Jinými slovy, tato část vzorce vytvoří opakující se posloupnost čísel, například 1,1,1,2,2,2,3,3,3,4,4,4,... Každé číslo se opakuje tolikrát, kolik je sloupců ve vašem rozsahu.
Výpočet číslo sloupce , sestavíte vhodnou posloupnost čísel pomocí funkce MOD:
MOD(ŘÁDEK(A1)-1, SLOUPCE($A$2:$C$5))+1
Protože v našem rozsahu (A2:C5) jsou 3 sloupce, musí být posloupnost 1,2,3,1,2,3,...
Funkce MOD vrací zbytek po dělení.
V E2, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
se stává
MOD(1-1, 3)+1)
a vrátí 1.
V E3, MOD(ROW(A2)-1, COLUMNS($A$2:$C$5))+1)
se stává
MOD(2-1, 3)+1)
a vrátí 2.
Po zadání čísel řádků a sloupců nemá INDEX žádné problémy s načtením požadované hodnoty.
V E2 vrátí INDEX($A$2:$C$5, 1, 1) hodnotu z 1. řádku a 1. sloupce odkazovaného rozsahu, tj. z buňky A2.
V E3 vrátí INDEX($A$2:$C$5, 1, 2) hodnotu z 1. řádku a 2. sloupce, tj. z buňky B2.
A tak dále.
Druhý vzorec, který prohledává rozsah podle sloupců, funguje podobně. Rozdíl je v tom, že pro získání čísla řádku používá MOD a pro získání čísla sloupce QUOTIENT.
Funkce TOCOL nefunguje
Pokud funkce TOCOL vyhodí chybu, bude to s největší pravděpodobností jeden z těchto důvodů:
TOCOL není ve vašem Excelu podporován
Když se zobrazí chyba #NAME?, je třeba nejprve zkontrolovat správný zápis názvu funkce. Pokud je název správný, ale chyba přetrvává, funkce není ve vaší verzi aplikace Excel k dispozici. V takovém případě zvažte použití alternativní funkce TOCOL.
Pole je příliš velké
Chyba #NUM znamená, že se pole nevejde do sloupce. Typickým případem je odkazování na celé sloupce nebo řádky.
Není dostatek prázdných buněk
Pokud dojde k chybě #SPILL, zkontrolujte, zda je ve sloupci, do kterého je vzorec zadán, dostatek prázdných buněk, které se vyplní výsledky. Pokud jsou buňky vizuálně prázdné, zkontrolujte, zda v nich nejsou mezery a jiné netisknutelné znaky. Další informace naleznete v části Jak opravit chybu #SPILL v aplikaci Excel.
Takto můžete pomocí funkce TOCOL v aplikaci Excel 365 a alternativních řešení v dřívějších verzích transformovat dvourozměrné pole na jeden sloupec. 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
Funkce Excel TOCOL - příklady vzorců (.xlsx soubor)