Obsah
Najrýchlejším spôsobom transformácie stĺpca alebo riadku hodnôt na dvojrozmerné pole je použitie funkcie WRAPCOLS alebo WRAPROWS.
Už od prvých dní Excelu sa v ňom veľmi dobre počítajú a analyzujú čísla. Manipulácia s poliami však bola tradične náročná. Zavedenie dynamických polí výrazne uľahčilo používanie vzorcov pre polia. A teraz Microsoft vydáva sadu nových funkcií dynamických polí na manipuláciu s poliami a ich pretváranie. V tomto návode sa naučíte používať dve takéto funkcie,WRAPCOLS a WRAPROWS, aby ste v okamihu premenili stĺpec alebo riadok na 2D pole.
Funkcia Excel WRAPCOLS
Funkcia WRAPCOLS v programe Excel transformuje riadok alebo stĺpec hodnôt na dvojrozmerné pole na základe zadaného počtu hodnôt v riadku.
Syntax má nasledujúce argumenty:
WRAPCOLS(vektor, wrap_count, [pad_with])Kde:
- vektor (povinné) - zdrojové jednorozmerné pole alebo rozsah.
- wrap_count (povinné) - maximálny počet hodnôt na stĺpec.
- pad_with (nepovinné) - hodnota, ktorou sa doplní posledný stĺpec, ak nie je dostatok položiek na jeho vyplnenie. Ak sa vynechá, chýbajúce hodnoty sa doplnia hodnotou #N/A (predvolené).
Ak chcete napríklad zmeniť rozsah B5:B24 na dvojrozmerné pole s 5 hodnotami na stĺpec, vzorec je:
=WRAPROWS(B5:B24, 5)
Vzorec zadáte do ľubovoľnej jednej bunky a automaticky sa rozleje do toľkých buniek, koľko je potrebné. Vo výstupe WRAPCOLS sú hodnoty usporiadané vertikálne, zhora nadol, na základe wrap_count Po dosiahnutí počtu sa spustí nový stĺpec.
Funkcia Excel WRAPROWS
Funkcia WRAPROWS v programe Excel konvertuje riadok alebo stĺpec hodnôt na dvojrozmerné pole na základe počtu hodnôt v riadku, ktorý zadáte.
Syntax je nasledujúca:
WRAPROWS(vektor, wrap_count, [pad_with])Kde:
- vektor (povinné) - zdrojové jednorozmerné pole alebo rozsah.
- wrap_count (povinné) - maximálny počet hodnôt na riadok.
- pad_with (nepovinné) - hodnota, ktorou sa vyplní posledný riadok, ak nie je dostatok položiek na jeho vyplnenie. Predvolená hodnota je #N/A.
Napríklad na transformáciu rozsahu B5:B24 na 2D pole s 5 hodnotami v každom riadku sa použije vzorec:
=WRAPROWS(B5:B24, 5)
Vzorec zadáte do ľavej hornej bunky rozsahu rozsypu a automaticky sa vyplnia všetky ostatné bunky. Funkcia WRAPROWS usporiada hodnoty horizontálne, zľava doprava, na základe wrap_count Po dosiahnutí počtu začne nový riadok.
Dostupnosť WRAPCOLS a WRAPROWS
Obe funkcie sú k dispozícii len v aplikácii Excel pre Microsoft 365 (Windows a Mac) a v aplikácii Excel pre web.
V starších verziách môžete na vykonanie transformácie zo stĺpca na pole a z riadka na riadok použiť tradičné zložitejšie vzorce. Ďalej v tomto návode sa budeme podrobne zaoberať alternatívnymi riešeniami.
Tip. Ak chcete vykonať opačnú operáciu, t. j. zmeniť 2D pole na jeden stĺpec alebo riadok, použite funkciu TOCOL alebo TOROW.
Ako previesť stĺpec / riadok na rozsah v programe Excel - príklady
Teraz, keď už máte prehľad o základnom použití, sa bližšie pozrieme na niekoľko konkrétnejších prípadov.
Nastavenie maximálneho počtu hodnôt na stĺpec alebo riadok
V závislosti od štruktúry pôvodných údajov sa vám môže zdať vhodné ich opätovné usporiadanie do stĺpcov (WRAPCOLS) alebo riadkov (WRAPROWS). Bez ohľadu na to, ktorú funkciu použijete, je wrap_count argument, ktorý určuje maximálny počet hodnôt v každom stĺpci/riadku.
Ak chcete napríklad transformovať rozsah B4:B23 na 2D pole tak, aby mal každý stĺpec maximálne 10 hodnôt, použite tento vzorec:
=WRAPCOLS(B4:B23, 10)
Ak chcete zmeniť usporiadanie rovnakého rozsahu podľa riadkov tak, aby každý riadok obsahoval maximálne 4 hodnoty, vzorec je:
=WRAPROWS(B4:B23, 4)
Na obrázku nižšie je znázornené, ako to vyzerá:
Doplniť chýbajúce hodnoty do výsledného poľa
V prípade, že nie je dostatok hodnôt na vyplnenie všetkých stĺpcov/riadkov výsledného rozsahu, WRAPROWS a WRAPCOLS vrátia chyby #N/A, aby sa zachovala štruktúra 2D poľa.
Ak chcete zmeniť predvolené správanie, môžete zadať vlastnú hodnotu pre voliteľný pad_with argument.
Ak chcete napríklad transformovať rozsah B4:B21 na 2D pole s maximálnou šírkou 5 hodnôt a vyplniť posledný riadok pomlčkami, ak nie je dostatok údajov na jeho vyplnenie, použite tento vzorec:
=WRAPROWS(B4:B21, 5, "-")
Na nahradenie chýbajúcich hodnôt reťazcami s nulovou dĺžkou (prázdnymi miestami) sa použije vzorec:
=WRAPROWS(B4:B21, 5, "")
Porovnajte výsledky s predvoleným správaním (vzorec v D5), kde pad_with je vynechaný:
Zlúčenie viacerých riadkov do rozsahu 2D
Ak chcete spojiť niekoľko samostatných riadkov do jedného 2D poľa, najprv riadky horizontálne poskladajte pomocou funkcie HSTACK a potom hodnoty zabaľte pomocou funkcie WRAPROWS alebo WRAPCOLS.
Napríklad na zlúčenie hodnôt z 3 riadkov (B5:J5, B7:G7 a B9:F9) a zabalenie do stĺpcov, z ktorých každý obsahuje 10 hodnôt, je vzorec nasledovný:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Ak chcete spojiť hodnoty z viacerých riadkov do 2D rozsahu, kde každý riadok obsahuje 5 hodnôt, vzorec má tento tvar:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Kombinácia viacerých stĺpcov do 2D poľa
Ak chcete zlúčiť niekoľko stĺpcov do 2D rozsahu, najprv ich vertikálne poskladajte pomocou funkcie VSTACK a potom hodnoty zabalte do riadkov (WRAPROWS) alebo stĺpcov (WRAPCOLS).
Ak chcete napríklad spojiť hodnoty z 3 stĺpcov (B5:J5, B7:G7 a B9:F9) do 2D rozsahu, kde každý stĺpec obsahuje 10 hodnôt, vzorec je:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Ak chcete spojiť rovnaké stĺpce do 2D rozsahu, kde každý riadok obsahuje 5 hodnôt, použite tento vzorec:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Zabaliť a zoradiť pole
V situácii, keď zdrojový rozsah obsahuje hodnoty v náhodnom poradí, zatiaľ čo výstup má byť zoradený, postupujte týmto spôsobom:
- Zoraďte počiatočné pole požadovaným spôsobom pomocou funkcie SORT.
- Dodajte zoradené pole do WRAPCOLS alebo WRAPROWS.
Ak chcete napríklad rozsah B4:B23 rozdeliť do riadkov po 4 hodnotách a výsledný rozsah zoradiť od A po Z, vytvorte vzorec takto:
=WRAPROWS(SORT(B4:B23), 4)
Ak chcete ten istý rozsah zabaliť do stĺpcov, v každom z nich 10 hodnôt, a zoradiť výstup podľa abecedy, vzorec je:
=WRAPCOLS(SORT(B4:B23), 10)
Výsledky vyzerajú takto:
Tip. Ak chcete usporiadať hodnoty vo výslednom poli do zostupné poradie , nastavte tretí argument ( sort_order ) funkcie SORT na -1.
Alternatíva WRAPCOLS pre Excel 365 - 2010
V starších verziách programu Excel, v ktorých nie je podporovaná funkcia WRAPCOLS, si môžete vytvoriť vlastný vzorec na zabalenie hodnôt z jednorozmerného poľa do stĺpcov. To možno vykonať pomocou 5 rôznych funkcií spolu.
Alternatíva WRAPCOLS na prevod riadku na 2D rozsah:
IFERROR(IF(ROW(A1)> n , "", INDEX( row_range , , RIADOK(A1) + (STĹPEC(A1)-1)* n )), "")Alternatíva WRAPCOLS na prevod stĺpca na 2D rozsah:
IFERROR(IF(ROW(A1)> n , "", INDEX( column_range , RIADOK(A1) + (STĹPEC(A1)-1)* n )), "")Kde n je maximálny počet hodnôt na stĺpec.
Na nasledujúcom obrázku použijeme nasledujúci vzorec na premenu jednoriadkového rozsahu (D4:J4) na trojriadkové pole.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
A tento vzorec zmení rozsah jedného stĺpca (B4:B20) na päťriadkové pole:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Uvedené riešenia napodobňujú analogické vzorce WRAPCOLS a prinášajú rovnaké výsledky:
=WRAPCOLS(D4:J4, 3, "")
a
=WRAPCOLS(B4:B20, 5, "")
Nezabudnite, že na rozdiel od funkcie WRAPCOLS dynamického poľa sa tradičné vzorce riadia prístupom jeden vzorec - jedna bunka. Náš prvý vzorec je teda zadaný v D8 a skopírovaný 3 riadky nadol a 3 stĺpce doprava. Druhý vzorec je zadaný v D14 a skopírovaný 5 riadkov nadol a 4 stĺpce doprava.
Ako tieto vzorce fungujú
V jadre oboch vzorcov sa používa funkcia INDEX, ktorá vracia hodnotu z dodaného poľa na základe čísla riadku a stĺpca:
INDEX(array, row_num, [column_num])Keďže ide o jednoriadkové pole, môžeme vynechať číslo_riadku argument, takže je predvolená hodnota 1. col_num sa automaticky vypočíta pre každú bunku, do ktorej sa vzorec skopíruje. A tu je spôsob, ako to urobíme:
RIADOK(A1)+(STĹPEC(A1)-1)*3)
Funkcia ROW vracia číslo riadku odkazu A1, ktoré je 1.
Funkcia COLUMN vracia číslo stĺpca odkazu A1, ktoré je tiež 1. Odčítaním 1 sa zmení na nulu a vynásobením 0 číslom 3 sa získa 0.
Potom sa sčíta 1 vrátený riadkom ROW a 0 vrátený stĺpcom COLUMN a výsledkom je 1.
Týmto spôsobom sa vzorec INDEX v ľavej hornej bunke cieľového rozsahu (D8) podrobí tejto transformácii:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
zmeny na
INDEX($D$4:$J$4, ,1)
a vráti hodnotu z 1. stĺpca zadaného poľa, čo je "Apples" v D4.
Keď sa vzorec skopíruje do bunky D9, relatívne odkazy na bunky sa zmenia na základe relatívnej polohy riadkov a stĺpcov, zatiaľ čo absolútny odkaz na rozsah zostane nezmenený:
INDEX($D$4:$J$4,, RIADOK(A2)+(STĹPEC(A2)-1)*3))
sa mení na:
INDEX($D$4:$J$4,, 2+(1-1)*3))
sa stáva:
INDEX($D$4:$J$4,, 2))
a vráti hodnotu z 2. stĺpca zadaného poľa, čo je "Apricots" v E4.
Funkcia IF skontroluje číslo riadku a ak je väčšie ako zadaný počet riadkov (v našom prípade 3), vráti prázdny reťazec (""), inak vráti výsledok funkcie INDEX:
IF(ROW(A1)>3, "", INDEX(...))
Nakoniec funkcia IFERROR opravuje chybu #REF!, ktorá sa vyskytne, keď sa vzorec skopíruje do viacerých buniek, než je skutočne potrebné.
Druhý vzorec, ktorý prevádza stĺpec na 2D rozsah, pracuje s rovnakou logikou. Rozdiel je v tom, že na zistenie riadku používate kombináciu ROW + COLUMN. číslo_riadku argument pre INDEX. col_num parameter nie je v tomto prípade potrebný, pretože v zdrojovom poli je len jeden stĺpec.
Alternatíva WRAPROWS pre Excel 365 - 2010
Ak chcete hodnoty z jednorozmerného poľa zabaliť do riadkov v aplikácii Excel 2019 a starších, môžete použiť nasledujúce alternatívy funkcie WRAPROWS.
Transformácia riadku na 2D rozsah:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , STĹPEC(A1)+(RIADOK(A1)-1)* n )), "")Zmena stĺpca na 2D rozsah:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( column_range , STĹPEC(A1)+(RIADOK(A1)-1)* n )), "")Kde n je maximálny počet hodnôt na riadok.
V našom vzorovom súbore údajov použijeme nasledujúci vzorec na prevod jednoriadkového rozsahu (D4:J4) na rozsah troch stĺpcov. Vzorec sa nachádza v bunke D8 a potom sa skopíruje cez 3 stĺpce a 3 riadky.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
Ak chcete zmeniť rozsah s 1 stĺpcom (B4:B20) na rozsah s 5 stĺpcami, zadajte nasledujúci vzorec do D14 a pretiahnite ho cez 5 stĺpcov a 4 riadky.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
V programe Excel 365 možno rovnaké výsledky dosiahnuť pomocou ekvivalentných vzorcov WRAPCOLS:
=WRAPROWS(D4:J4, 3, "")
a
=WRAPROWS(B4:B20, 5, "")
Ako tieto vzorce fungujú
V podstate tieto vzorce fungujú rovnako ako v predchádzajúcom príklade. Rozdiel je v tom, ako určíte číslo_riadku a col_num súradnice pre funkciu INDEX:
INDEX($D$4:$J$4,, STĹPEC(A1)+(RIADOK(A1)-1)*3))
Ak chcete získať číslo stĺpca pre ľavú hornú bunku v cieľovom rozsahu (D8), použite tento výraz:
STĹPEC(A1)+(RIADOK(A1)-1)*3)
ktorá sa zmení na:
1+(1-1)*3
a dáva 1.
Výsledkom je, že nasledujúci vzorec vráti hodnotu z prvého stĺpca zadaného poľa, čo je "Apples":
INDEX($D$4:$J$4,, 1)
Výsledok je zatiaľ rovnaký ako v predchádzajúcom príklade. Pozrime sa však, čo sa stane v iných bunkách...
V bunke D9 sa relatívne odkazy na bunky zmenia takto:
INDEX($D$4:$J$4,, STĹPEC(A2)+(RIADOK(A2)-1)*3))
Vzorec sa teda mení na:
INDEX($D$4:$J$4,, 1+(2-1)*3))
sa stáva:
INDEX($D$4:$J$4,, 4))
a vráti hodnotu zo 4. stĺpca zadaného poľa, čo je "Cherries" v G4.
Funkcia IF skontroluje počet stĺpcov a ak je väčší ako zadaný počet stĺpcov, vráti prázdny reťazec (""), inak vráti výsledok funkcie INDEX:
IF(COLUMN(A1)>3, "", INDEX(...))
Na záver treba dodať, že funkcia IFERROR zabraňuje tomu, aby sa chyby #REF! objavovali v bunkách "navyše", ak vzorec skopírujete do väčšieho počtu buniek, ako je skutočne potrebné.
Nefunguje funkcia WRAPCOLS alebo WRAPROWS
Ak vo vašom programe Excel nie sú k dispozícii funkcie "wrap" alebo sa vyskytne chyba, je to pravdepodobne jeden z nasledujúcich dôvodov.
#NAME? chyba
V programe Excel 365 sa môže vyskytnúť chyba #NAME?, pretože ste nesprávne napísali názov funkcie. V iných verziách to znamená, že funkcie nie sú podporované. Ako riešenie môžete použiť alternatívu WRAPCOLS alebo WRAPROWS.
#VALUE! chyba
Chyba #VALUE nastane, ak vektor argument nie je jednorozmerné pole.
#NUM! chyba
Chyba #NUM nastane, ak wrap_count hodnota je 0 alebo záporné číslo.
#SPILL! chyba
Chyba #SPILL najčastejšie znamená, že nie je dostatok prázdnych buniek, do ktorých by sa dali výsledky vysypať. Vymažte susedné bunky a bude to preč. Ak chyba pretrváva, pozrite si, čo znamená #SPILL v programe Excel a ako ju opraviť.
To je postup, ako pomocou funkcií WRAPCOLS a WRAPROWS previesť jednorozmerný rozsah na dvojrozmerné pole v programe Excel. Ďakujem vám za prečítanie a dúfam, že sa na našom blogu uvidíme budúci týždeň!
Cvičebnica na stiahnutie
Funkcie WRAPCOLS a WRAPROWS - príklady (.xlsx súbor)