Převod sloupce / řádku na pole v aplikaci Excel: funkce WRAPCOLS &; WRAPROWS

  • Sdílet Toto
Michael Brown

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:

    1. Seřaďte počáteční pole požadovaným způsobem pomocí funkce SORT.
    2. 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)

    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.