Obsah
Nejrychlejší způsob, jak transformovat sloupec nebo řádek hodnot do dvourozměrného pole, je použití funkce WRAPCOLS nebo WRAPROWS.
Od prvních dnů existence aplikace Excel se v ní velmi dobře počítají a analyzují čísla. Manipulace s poli však byla tradičně náročná. Zavedení dynamických polí používání vzorců pro pole značně usnadnilo. A nyní společnost Microsoft vydává sadu nových funkcí pro manipulaci s poli a jejich přetváření. V tomto kurzu se naučíte používat dvě takové funkce,WRAPCOLS a WRAPROWS, které slouží k rychlé transformaci sloupce nebo řádku na 2D pole.
Funkce Excel WRAPCOLS
Funkce WRAPCOLS v aplikaci Excel transformuje řádek nebo sloupec hodnot do dvourozměrného pole na základě zadaného počtu hodnot v řádku.
Syntaxe má následující argumenty:
WRAPCOLS(vector, wrap_count, [pad_with])Kde:
- vektor (povinné) - zdrojové jednorozměrné pole nebo rozsah.
- wrap_count (povinné) - maximální počet hodnot na sloupec.
- pad_with (nepovinné) - hodnota, kterou se doplní poslední sloupec, pokud není dostatek položek pro jeho vyplnění. Pokud se neuvede, chybějící hodnoty se doplní #N/A (výchozí).
Například pro změnu rozsahu B5:B24 na dvourozměrné pole s 5 hodnotami na sloupec je vzorec následující:
=WRAPROWS(B5:B24, 5)
Vzorec zadáte do libovolné buňky a automaticky se rozsype do tolika buněk, kolik je potřeba. Ve výstupu WRAPCOLS jsou hodnoty uspořádány vertikálně, shora dolů, na základě wrap_count Po dosažení počtu se spustí nový sloupec.
Funkce Excel WRAPROWS
Funkce WRAPROWS v aplikaci Excel převede řádek nebo sloupec hodnot na dvourozměrné pole na základě zadaného počtu hodnot v řádku.
Syntaxe je následující:
WRAPROWS(vektor, wrap_count, [pad_with])Kde:
- vektor (povinné) - zdrojové jednorozměrné pole nebo rozsah.
- wrap_count (povinné) - maximální počet hodnot na řádek.
- pad_with (nepovinné) - hodnota, kterou se vyplní poslední řádek, pokud není dostatek položek k jeho vyplnění. Výchozí hodnota je #N/A.
Například pro transformaci rozsahu B5:B24 na 2D pole s 5 hodnotami v každém řádku je vzorec následující:
=WRAPROWS(B5:B24, 5)
Vzorec zadáte do levé horní buňky rozsypaného rozsahu a automaticky se vyplní všechny ostatní buňky. Funkce WRAPROWS uspořádá hodnoty vodorovně zleva doprava na základě zadaného vzorce. wrap_count Po dosažení počtu se spustí nový řádek.
Dostupnost WRAPCOLS a WRAPROWS
Obě funkce jsou k dispozici pouze v aplikaci Excel pro Microsoft 365 (Windows a Mac) a Excel pro web.
V dřívějších verzích můžete použít tradiční složitější vzorce pro transformaci sloupce na pole a řádek na pole. V dalším průběhu tohoto tutoriálu se budeme podrobně zabývat alternativními řešeními.
Tip: Chcete-li provést opačnou operaci, tj. změnit 2D pole na jeden sloupec nebo řádek, použijte funkci TOCOL nebo TOROW.
Jak převést sloupec / řádek na rozsah v aplikaci Excel - příklady
Nyní, když jste pochopili základní použití, se podíváme blíže na několik konkrétnějších případů.
Nastavení maximálního počtu hodnot na sloupec nebo řádek
V závislosti na struktuře původních dat může být vhodné jejich přeuspořádání do sloupců (WRAPCOLS) nebo řádků (WRAPROWS). Ať už použijete jakoukoli funkci, je to funkce wrap_count argument, který určuje maximální počet hodnot v každém sloupci/řádku.
Chcete-li například transformovat rozsah B4:B23 na 2D pole tak, aby každý sloupec obsahoval maximálně 10 hodnot, použijte tento vzorec:
=WRAPCOLS(B4:B23, 10)
Chcete-li stejný rozsah uspořádat podle řádků tak, aby každý řádek obsahoval maximálně 4 hodnoty, použijete následující vzorec:
=WRAPROWS(B4:B23, 4)
Jak to vypadá, ukazuje obrázek níže:
Doplnění chybějících hodnot do výsledného pole
V případě, že není dostatek hodnot pro vyplnění všech sloupců/řádků výsledného rozsahu, vrátí WRAPROWS a WRAPCOLS chyby #N/A, aby byla zachována struktura 2D pole.
Chcete-li změnit výchozí chování, můžete zadat vlastní hodnotu nepovinného parametru pad_with argument.
Chcete-li například transformovat rozsah B4:B21 na 2D pole o maximální šířce 5 hodnot a poslední řádek vyplnit pomlčkami, pokud není dostatek dat, použijte tento vzorec:
=WRAPROWS(B4:B21, 5, "-")
Pro nahrazení chybějících hodnot řetězci nulové délky (prázdnými místy) se použije vzorec:
=WRAPROWS(B4:B21, 5, "")
Porovnejte prosím výsledky s výchozím chováním (vzorec v D5), kde pad_with je vynechán:
Sloučení více řádků do 2D rozsahu
Chcete-li spojit několik samostatných řádků do jediného 2D pole, nejprve řádky vodorovně poskládejte pomocí funkce HSTACK a poté hodnoty zabalte pomocí funkce WRAPROWS nebo WRAPCOLS.
Například pro sloučení hodnot ze 3 řádků (B5:J5, B7:G7 a B9:F9) a jejich zabalení do sloupců, z nichž každý obsahuje 10 hodnot, je vzorec následující:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Chcete-li spojit hodnoty z více řádků do 2D rozsahu, kde každý řádek obsahuje 5 hodnot, vzorec má tento tvar:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Spojení více sloupců do 2D pole
Chcete-li sloučit několik sloupců do 2D rozsahu, nejprve je pomocí funkce VSTACK vertikálně naskládejte na sebe a poté hodnoty zabalte do řádků (WRAPROWS) nebo sloupců (WRAPCOLS).
Například pro spojení hodnot ze 3 sloupců (B5:J5, B7:G7 a B9:F9) do 2D rozsahu, kde každý sloupec obsahuje 10 hodnot, je vzorec následující:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Chcete-li sloučit stejné sloupce do 2D rozsahu, kde každý řádek obsahuje 5 hodnot, použijte tento vzorec:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Zabalení a setřídění pole
V případě, že zdrojový rozsah obsahuje hodnoty v náhodném pořadí, zatímco výstup má být setříděný, postupujte tímto způsobem:
- Seřaďte počáteční pole požadovaným způsobem pomocí funkce SORT.
- Dodejte setříděné pole do WRAPCOLS nebo WRAPROWS.
Chcete-li například zabalit rozsah B4:B23 do řádků po 4 hodnotách a výsledný rozsah seřadit od A do Z, sestavte vzorec takto:
=WRAPROWS(SORT(B4:B23), 4)
Chcete-li stejný rozsah zabalit do sloupců po 10 hodnotách a seřadit výstup podle abecedy, použijete následující vzorec:
=WRAPCOLS(SORT(B4:B23), 10)
Výsledky vypadají následovně:
Tip. Chcete-li uspořádat hodnoty ve výsledném poli do tvaru sestupné pořadí , nastavte třetí argument ( sort_order ) funkce SORT na -1.
Alternativa WRAPCOLS pro Excel 365 - 2010
Ve starších verzích aplikace Excel, kde není podporována funkce WRAPCOLS, můžete sestavit vlastní vzorec pro zabalení hodnot z jednorozměrného pole do sloupců. To lze provést pomocí 5 různých funkcí dohromady.
Alternativa WRAPCOLS pro převod řádku na 2D rozsah:
IFERROR(IF(ROW(A1)> n , "", INDEX( row_range , , ŘÁDEK(A1) + (SLOUPEC(A1)-1)* n )), "")Alternativa WRAPCOLS pro převod sloupce na 2D rozsah:
IFERROR(IF(ROW(A1)> n , "", INDEX( column_range , ŘÁDEK(A1) + (SLOUPEC(A1)-1)* n )), "")Kde: n je maximální počet hodnot na sloupec.
Na následujícím obrázku použijeme následující vzorec k přeměně jednořádkového rozsahu (D4:J4) na třířádkové pole.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
A tento vzorec změní rozsah jednoho sloupce (B4:B20) na pětiřádkové pole:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Výše uvedená řešení napodobují analogické vzorce WRAPCOLS a vedou ke stejným výsledkům:
=WRAPCOLS(D4:J4, 3, "")
a
=WRAPCOLS(B4:B20, 5, "")
Mějte na paměti, že na rozdíl od funkce dynamického pole WRAPCOLS se tradiční vzorce řídí přístupem jeden vzorec - jedna buňka. Náš první vzorec je tedy zadán v D8 a zkopírován o 3 řádky dolů a 3 sloupce doprava. Druhý vzorec je zadán v D14 a zkopírován o 5 řádků dolů a 4 sloupce doprava.
Jak tyto vzorce fungují
Jádrem obou vzorců je funkce INDEX, která na základě čísla řádku a sloupce vrací hodnotu z dodaného pole:
INDEX(pole, číslo_řádku, [číslo_sloupce])Protože se jedná o jednořádkové pole, můžeme vynechat příkaz row_num argument, takže je výchozí hodnota 1. col_num automaticky vypočítá pro každou buňku, do které je vzorec zkopírován. A zde je návod, jak to udělat:
ŘÁDEK(A1)+(SLOUPEC(A1)-1)*3)
Funkce ROW vrací číslo řádku odkazu A1, které je 1.
Funkce COLUMN vrací číslo sloupce odkazu A1, které je také 1. Odečtením 1 se změní na nulu. A vynásobením 0 číslem 3 získáme 0.
Pak sečtete 1 vrácenou řádkem ROW a 0 vrácenou sloupcem COLUMN a dostanete 1 jako výsledek.
Tímto způsobem se vzorec INDEX v levé horní buňce cílového rozsahu (D8) transformuje:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
změny na
INDEX($D$4:$J$4, ,1)
a vrátí hodnotu z 1. sloupce zadaného pole, což je "Apples" v D4.
Při kopírování vzorce do buňky D9 se relativní odkazy na buňky změní na základě relativní polohy řádků a sloupců, zatímco absolutní odkaz na rozsah zůstane nezměněn:
INDEX($D$4:$J$4,, ŘÁDEK(A2)+(SLOUPEC(A2)-1)*3))
se změní na:
INDEX($D$4:$J$4,, 2+(1-1)*3))
se stává:
INDEX($D$4:$J$4,, 2))
a vrátí hodnotu z 2. sloupce zadaného pole, což je "Meruňky" v E4.
Funkce IF zkontroluje číslo řádku a pokud je větší než zadaný počet řádků (v našem případě 3), vrátí prázdný řetězec (""), jinak výsledek funkce INDEX:
IF(ROW(A1)>3, "", INDEX(...))
A konečně funkce IFERROR opravuje chybu #REF!, která vzniká, když je vzorec zkopírován do více buněk, než je skutečně potřeba.
Druhý vzorec, který převádí sloupec na 2D rozsah, pracuje se stejnou logikou. Rozdíl je v tom, že k určení rozsahu se používá kombinace ROW + COLUMN. row_num argument pro INDEX. col_num v tomto případě není potřeba, protože ve zdrojovém poli je pouze jeden sloupec.
Alternativa WRAPROWS pro Excel 365 - 2010
Chcete-li v aplikaci Excel 2019 a dřívějších verzích zabalit hodnoty z jednorozměrného pole do řádků, můžete použít následující alternativy funkce WRAPROWS.
Převést řádek na 2D rozsah:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , SLOUPEC(A1)+(ŘÁDEK(A1)-1)* n )), "")Změna sloupce na 2D rozsah:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( column_range , SLOUPEC(A1)+(ŘÁDEK(A1)-1)* n )), "")Kde: n je maximální počet hodnot na řádek.
V naší ukázkové datové sadě použijeme následující vzorec pro převod jednořádkového rozsahu (D4:J4) na rozsah tří sloupců. Vzorec se nachází v buňce D8 a poté se zkopíruje přes 3 sloupce a 3 řádky.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
Chcete-li přetvořit rozsah 1 sloupce (B4:B20) na rozsah 5 sloupců, zadejte níže uvedený vzorec do pole D14 a přetáhněte jej přes 5 sloupců a 4 řádky.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
V aplikaci Excel 365 lze stejných výsledků dosáhnout pomocí ekvivalentních vzorců WRAPCOLS:
=WRAPROWS(D4:J4, 3, "")
a
=WRAPROWS(B4:B20, 5, "")
Jak tyto vzorce fungují
Tyto vzorce v podstatě fungují stejně jako v předchozím příkladu. Rozdíl je v tom, jak určíte hodnotu row_num a col_num souřadnice pro funkci INDEX:
INDEX($D$4:$J$4,, SLOUPEC(A1)+(ŘÁDEK(A1)-1)*3))
Chcete-li získat číslo sloupce pro levou horní buňku v cílovém rozsahu (D8), použijte tento výraz:
SLOUPEC(A1)+(ŘÁDEK(A1)-1)*3)
který se změní na:
1+(1-1)*3
a dává 1.
Výsledkem je, že níže uvedený vzorec vrátí hodnotu z prvního sloupce zadaného pole, což je "Jablka":
INDEX($D$4:$J$4,, 1)
Výsledek je zatím stejný jako v předchozím příkladu. Podívejme se však, co se stane v dalších buňkách...
V buňce D9 se relativní odkazy na buňky změní takto:
INDEX($D$4:$J$4,, SLOUPEC(A2)+(ŘÁDEK(A2)-1)*3))
Vzorec se tedy mění na:
INDEX($D$4:$J$4,, 1+(2-1)*3))
se stává:
INDEX($D$4:$J$4,, 4))
a vrátí hodnotu ze 4. sloupce zadaného pole, což je "Cherries" v G4.
Funkce IF zkontroluje počet sloupců a pokud je větší než zadaný počet sloupců, vrátí prázdný řetězec (""), jinak výsledek funkce INDEX:
IF(COLUMN(A1)>3, "", INDEX(...))
Na závěr funkce IFERROR zabrání tomu, aby se v buňkách "navíc" objevily chyby #REF!, pokud vzorec zkopírujete do více buněk, než je skutečně potřeba.
Nefunguje funkce WRAPCOLS nebo WRAPROWS
Pokud funkce "wrap" nejsou ve vašem Excelu k dispozici nebo dojde k chybě, bude to s největší pravděpodobností jeden z níže uvedených důvodů.
#NAME?
V aplikaci Excel 365 může dojít k chybě #NAME?, protože jste špatně napsali název funkce. V ostatních verzích to znamená, že funkce nejsou podporovány. Jako řešení můžete použít alternativu WRAPCOLS nebo WRAPROWS.
#VALUE! chyba
K chybě #VALUE dojde, pokud vektor argument není jednorozměrné pole.
#NUM! chyba
K chybě #NUM dojde, pokud wrap_count hodnota je 0 nebo záporné číslo.
#SPILL! chyba
Chyba #SPILL nejčastěji znamená, že není dostatek prázdných buněk, do kterých by se výsledky vysypaly. Vymažte sousední buňky a bude to pryč. Pokud chyba přetrvává, podívejte se, co #SPILL v aplikaci Excel znamená a jak ji opravit.
To je návod, jak pomocí funkcí WRAPCOLS a WRAPROWS převést jednorozměrný rozsah na dvourozměrné pole v aplikaci Excel. Děkuji vám za přečtení a doufám, že se uvidíme na našem blogu příští týden!
Cvičebnice ke stažení
Funkce WRAPCOLS a WRAPROWS - příklady (.xlsx soubor)