Az oszlopok / sorok átalakítása tömbökké az Excelben: WRAPCOLS és WRAPROWS függvények

  • Ossza Meg Ezt
Michael Brown

A leggyorsabb módja egy oszlop vagy sor értékek kétdimenziós tömbté alakításának a WRAPCOLS vagy WRAPROWS függvény használatával.

Az Excel már a legelső napjai óta nagyon jó volt a számok kiszámításában és elemzésében. De a tömbök manipulálása hagyományosan kihívást jelentett. A dinamikus tömbök bevezetése sokkal könnyebbé tette a tömbképletek használatát. És most a Microsoft egy sor új dinamikus tömbfüggvényt ad ki a tömbök manipulálására és újraformálására. Ez a bemutató megtanítja, hogyan használjon két ilyen függvényt,WRAPCOLS és WRAPROWS, hogy egy oszlopot vagy sort pillanatok alatt 2D-s tömbté alakítson át.

    Excel WRAPCOLS funkció

    Az Excel WRAPCOLS függvénye az értékek sorát vagy oszlopát kétdimenziós tömbté alakítja a soronkénti értékek megadott száma alapján.

    A szintaxis a következő argumentumokkal rendelkezik:

    WRAPCOLS(vektor, wrap_count, [pad_with])

    Hol:

    • vektor (kötelező) - a forrás egydimenziós tömb vagy tartomány.
    • wrap_count (kötelező) - az értékek maximális száma oszloponként.
    • pad_with (opcionális) - az utolsó oszlopban kitöltendő érték, ha nincs elegendő elem az oszlop kitöltéséhez. Ha elhagyja, a hiányzó értékek #N/A-val lesznek kitöltve (alapértelmezett).

    Például, ha a B5:B24 tartományt 2 dimenziós tömbre szeretnénk módosítani, oszloponként 5 értékkel, a képlet a következő:

    =WRAPROWS(B5:B24, 5)

    A képletet bármelyik cellába beírja, és az automatikusan annyi cellába ömlik, ahány cellába szükséges. A WRAPCOLS kimenetben az értékek függőlegesen, felülről lefelé rendeződnek, az alábbiak alapján wrap_count A számláló elérését követően egy új oszlop indul.

    Excel WRAPROWS funkció

    Az Excel WRAPROWS függvénye az értékek sorát vagy oszlopát kétdimenziós tömbté alakítja a soronkénti értékek megadott száma alapján.

    A szintaxis a következő:

    WRAPROWS(vektor, wrap_count, [pad_with])

    Hol:

    • vektor (kötelező) - a forrás egydimenziós tömb vagy tartomány.
    • wrap_count (kötelező) - az értékek maximális száma soronként.
    • pad_with (opcionális) - az utolsó sorral kitöltendő érték, ha nincs elegendő elem a kitöltéshez. Az alapértelmezett érték #N/A.

    Például, ha a B5:B24 tartományt olyan 2D-s tömbtá alakítjuk át, amelynek minden sorában 5 érték van, a képlet a következő:

    =WRAPROWS(B5:B24, 5)

    A képletet a kiöntési tartomány bal felső cellájába írja be, és az automatikusan kitölti az összes többi cellát. A WRAPROWS függvény vízszintesen, balról jobbra rendezi az értékeket az alábbiak alapján wrap_count értéket. Miután elérte a számot, új sort kezd.

    WRAPCOLS és WRAPROWS elérhetősége

    Mindkét funkció csak az Excel for Microsoft 365 (Windows és Mac) és az Excel for the web programban érhető el.

    A korábbi verziókban hagyományos, összetettebb képleteket használhat az oszlop-tábla és sor-tábla átalakítások elvégzésére. A bemutató további részében részletesen tárgyaljuk az alternatív megoldásokat.

    Tipp: Ha fordított műveletet szeretne végezni, azaz egy 2D-s tömböt egyetlen oszlopra vagy sorra változtatni, használja a TOCOL, illetve a TOROW függvényt.

    Hogyan alakítsuk át az oszlopot / sort tartományba az Excelben - példák

    Most, hogy már tisztában van az alapvető használattal, nézzünk meg közelebbről néhány különlegesebb esetet.

    Az értékek maximális számának beállítása oszloponként vagy soronként

    Az eredeti adatok struktúrájától függően lehet, hogy az adatokat oszlopokba (WRAPCOLS) vagy sorokba (WRAPROWS) kell átrendezni. Bármelyik függvényt is használja, az a wrap_count argumentum, amely meghatározza az egyes oszlopok/sorok maximális értékszámát.

    Ha például a B4:B23 tartományt 2D-s tömbté szeretné átalakítani úgy, hogy minden oszlop maximum 10 értéket tartalmazzon, használja ezt a képletet:

    =WRAPCOLS(B4:B23, 10)

    Ha ugyanazt a tartományt soronként át szeretnénk rendezni úgy, hogy minden sorban legfeljebb 4 érték legyen, a képlet a következő:

    =WRAPROWS(B4:B23, 4)

    Az alábbi képen látható, hogy ez hogyan néz ki:

    Hiányzó értékek kitöltése a kapott tömbben

    Ha nincs elegendő érték a kapott tartomány összes oszlopának/sorának kitöltéséhez, a WRAPROWS és WRAPCOLS a 2D tömb szerkezetének megtartása érdekében #N/A hibát ad vissza.

    Az alapértelmezett viselkedés megváltoztatásához megadhat egy egyéni értéket az opcionális pad_with érv.

    Ha például a B4:B21 tartományt egy legfeljebb 5 érték széles 2D-s tömbté szeretné átalakítani, és az utolsó sort kötőjelekkel kitölteni, ha nincs elég adat a kitöltéséhez, használja ezt a képletet:

    =WRAPROWS(B4:B21, 5, "-")

    A hiányzó értékek nulla hosszúságú karakterláncokkal (üres karakterláncokkal) való helyettesítéséhez a képlet a következő:

    =WRAPROWS(B4:B21, 5, "")

    Kérjük, hasonlítsa össze az eredményeket az alapértelmezett viselkedéssel (a D5-ös képletben található képlettel), ahol pad_with elmarad:

    Több sor összevonása 2D tartományba

    Ha néhány különálló sort egyetlen 2D-s tömbben szeretne egyesíteni, először vízszintesen egymásra kell rakni a sorokat a HSTACK függvény segítségével, majd az értékeket a WRAPROWS vagy a WRAPCOLS függvény segítségével be kell csomagolni.

    Például, ha 3 sor (B5:J5, B7:G7 és B9:F9) értékeit egyesítjük és oszlopokba csomagoljuk, amelyek mindegyike 10 értéket tartalmaz, a képlet a következő:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Ha több sorból származó értékeket szeretne egy 2D tartományba kombinálni, ahol minden sor 5 értéket tartalmaz, a képlet a következő formulát használja:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    Több oszlop kombinálása 2D tömbben

    Több oszlop 2D tartományba történő összevonásához először függőlegesen egymásra kell rakni őket a VSTACK függvény segítségével, majd az értékeket sorokba (WRAPROWS) vagy oszlopokba (WRAPCOLS) kell csomagolni.

    Például, ha 3 oszlop (B5:J5, B7:G7 és B9:F9) értékeit egy 2D tartományba szeretnénk kombinálni, ahol minden oszlop 10 értéket tartalmaz, a képlet a következő:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Ha ugyanazokat az oszlopokat egy olyan 2D tartományba szeretné kombinálni, ahol minden sor 5 értéket tartalmaz, használja ezt a képletet:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    A tömb felgöngyölítése és rendezése

    Abban az esetben, ha a forrás tartományban az értékek véletlenszerű sorrendben vannak, míg a kimenetet rendezettnek szeretné, így járjon el:

    1. Rendezze a kezdeti tömböt a kívánt módon a SORT függvény segítségével.
    2. A WRAPCOLS vagy a WRAPROWS számára a rendezett tömböt adja meg.

    Ha például a B4:B23 tartományt sorokba akarjuk csomagolni, minden sorban 4 értékkel, és az így kapott tartományt A-tól Z-ig akarjuk rendezni, akkor egy ilyen képletet kell létrehoznunk:

    =WRAPROWS(SORT(B4:B23), 4)

    Ha ugyanazt a tartományt oszlopokba akarjuk csomagolni, mindegyikben 10 értékkel, és a kimenetet ábécérendben akarjuk rendezni, a képlet a következő:

    =WRAPCOLS(SORT(B4:B23), 10)

    Az eredmények a következőképpen néznek ki:

    Tipp. Az így kapott tömb értékeinek elrendezése a csökkenő sorrendben , a harmadik argumentumot ( sort_order ) a SORT függvény -1 értékére.

    WRAPCOLS alternatíva az Excel 365 - 2010 számára

    A régebbi Excel-verziókban, ahol a WRAPCOLS függvény nem támogatott, saját képletet készíthetünk az egydimenziós tömb értékeinek oszlopokba csomagolására. Ezt 5 különböző függvény együttes használatával érhetjük el.

    WRAPCOLS alternatíva egy sor 2D tartományba történő átalakítására:

    IFERROR(IF(ROW(A1)> n , "", INDEX( row_range , , , SOR(A1) + (OSZLOP(A1)-1)* n )), "")

    WRAPCOLS alternatíva egy oszlop 2D tartományba való átalakítására:

    IFERROR(IF(ROW(A1)> n , "", INDEX( column_range , SOR(A1) + (OSZLOP(A1)-1)* n )), "")

    Hol n az értékek maximális száma oszloponként.

    Az alábbi képen a következő képlet segítségével egy egysoros tartományt (D4:J4) háromsoros tömbté alakítunk.

    =IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3))), "")

    Ez a képlet pedig egy egyoszlopos tartományt (B4:B20) öt soros tömbre változtat:

    =IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), ""), "")

    A fenti megoldások az analóg WRAPCOLS-képleteket utánozzák, és ugyanazokat az eredményeket adják:

    =WRAPCOLS(D4:J4, 3, "")

    és

    =WRAPCOLS(B4:B20, 5, "")

    Ne feledje, hogy a dinamikus tömb WRAPCOLS függvénnyel ellentétben a hagyományos képletek az egy képlet-egy-cella megközelítést követik. Tehát az első képletet a D8-ba írjuk be, és 3 sorral lejjebb és 3 oszloppal jobbra másoljuk. A második képletet a D14-be írjuk be, és 5 sorral lejjebb és 4 oszloppal jobbra másoljuk.

    Hogyan működnek ezek a képletek

    Mindkét képlet középpontjában az INDEX függvény áll, amely egy sor- és oszlopszámon alapuló értéket ad vissza a megadott tömbből:

    INDEX(array, row_num, [column_num])

    Mivel egysoros tömbről van szó, elhagyhatjuk a row_num argumentum, így alapértelmezés szerint 1. A trükk az, hogy a col_num automatikusan kiszámítjuk minden egyes cellára, ahová a képletet másoljuk. És itt van, hogyan csináljuk ezt:

    SOR(A1)+(OSZLOP(A1)-1)*3)

    A ROW függvény az A1 hivatkozás sorszámát adja vissza, ami 1.

    A COLUMN függvény az A1 hivatkozás oszlopszámát adja vissza, ami szintén 1. Az 1 kivonásával nullává válik. 0-t pedig megszorozva 3-mal 0-t kapunk.

    Ezután összeadjuk a ROW által visszaadott 1 és a COLUMN által visszaadott 0 értéket, és az eredmény 1 lesz.

    Ily módon a céltartomány bal felső cellájában (D8) lévő INDEX-képlet átesik ezen az átalakításon:

    INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3)))

    változások a

    INDEX($D$4:$J$4, ,1)

    és visszaadja a megadott tömb 1. oszlopának értékét, ami a D4-ben az "Alma".

    Amikor a képletet a D9-es cellába másolja, a relatív cellahivatkozások a sorok és oszlopok relatív pozíciója alapján változnak, míg az abszolút tartományhivatkozás változatlan marad:

    INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3)))

    átalakul:

    INDEX($D$4:$J$4,, 2+(1-1)*3)))

    lesz:

    INDEX($D$4:$J$4,, 2)))

    és visszaadja a megadott tömb 2. oszlopának értékét, ami az E4-ben a "sárgabarack".

    Az IF függvény ellenőrzi a sorszámot, és ha az nagyobb, mint a megadott sorszám (esetünkben 3), akkor egy üres karakterláncot ("") ad vissza, egyébként pedig az INDEX függvény eredményét:

    IF(ROW(A1)>3, "", INDEX(...))

    Végül az IFERROR függvény kijavítja a #REF! hibát, amely akkor lép fel, ha a képletet a szükségesnél több cellába másolja.

    A második képlet, amely egy oszlopot 2D tartományba konvertál, ugyanezzel a logikával működik. A különbség az, hogy a ROW + COLUMN kombinációval számoljuk ki a row_num INDEX argumentum. A col_num paraméterre ebben az esetben nincs szükség, mivel a forrástömbben csak egy oszlop van.

    WRAPROWS alternatíva az Excel 365 - 2010 számára

    Az egydimenziós tömb értékeinek sorokba csomagolásához az Excel 2019 és korábbi programokban a WRAPROWS függvény alábbi alternatíváit használhatja.

    Egy sor átalakítása 2D tartományba:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , , OSZLOP(A1)+(SOR(A1)-1)* n )), "")

    Egy oszlop 2D tartományra történő módosítása:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( column_range , OSZLOP(A1)+(SOR(A1)-1)* n )), "")

    Hol n az értékek maximális száma soronként.

    A mintaadatkészletünkben a következő képletet használjuk egy egysoros tartomány (D4:J4) három oszlopos tartományba való átalakítására. A képlet a D8-as cellában landol, majd 3 oszlopon és 3 soron keresztül másolódik.

    =IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3))), "")

    Ha egy 1 oszlopos tartományt (B4:B20) 5 oszlopos tartományra szeretne átformálni, adja meg az alábbi képletet a D14-be, és húzza át 5 oszlopon és 4 soron.

    =IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), ""), "")

    Az Excel 365-ben ugyanezek az eredmények az egyenértékű WRAPCOLS képletekkel érhetők el:

    =WRAPROWS(D4:J4, 3, "")

    és

    =WRAPROWS(B4:B20, 5, "")

    Hogyan működnek ezek a képletek

    Lényegében ezek a formulák úgy működnek, mint az előző példában. A különbség abban van, hogy hogyan határozzuk meg a row_num és col_num az INDEX függvény koordinátái:

    INDEX($D$4:$J$4,, OSZLOP(A1)+(SOR(A1)-1)*3)))

    A céltartomány bal felső cellájának (D8) oszlopszámát a következő kifejezéssel kapja meg:

    OSZLOP(A1)+(SOR(A1)-1)*3)

    ami a következőre változik:

    1+(1-1)*3

    és 1.

    Ennek eredményeképpen az alábbi képlet a megadott tömb első oszlopának értékét adja vissza, amely az "Alma":

    INDEX($D$4:$J$4,, 1)

    Eddig az eredmény ugyanaz, mint az előző példában. De lássuk, mi történik a többi cellában...

    A D9-es cellában a relatív cellahivatkozások a következőképpen változnak:

    INDEX($D$4:$J$4,, OSZLOP(A2)+(SOR(A2)-1)*3)))

    Tehát a képlet átalakul:

    INDEX($D$4:$J$4,, 1+(2-1)*3)))

    lesz:

    INDEX($D$4:$J$4,, 4)))

    és visszaadja a megadott tömb 4. oszlopának értékét, ami a G4-ben a "Cherries".

    Az IF függvény ellenőrzi az oszlopok számát, és ha az nagyobb, mint a megadott oszlopok száma, akkor egy üres karakterláncot ("") ad vissza, ellenkező esetben az INDEX függvény eredményét:

    IF(COLUMN(A1)>3, "", INDEX(....))

    Az IFERROR utolsó simításként megakadályozza, hogy a #REF! hibák megjelenjenek az "extra" cellákban, ha a képletet a szükségesnél több cellába másolja.

    A WRAPCOLS vagy WRAPROWS funkció nem működik

    Ha a "wrap" funkciók nem állnak rendelkezésre az Excelben, vagy hibát eredményeznek, akkor valószínűleg az alábbi okok valamelyike áll fenn.

    #NAME? hiba

    Az Excel 365-ben a #NAME? hiba azért fordulhat elő, mert rosszul írta a függvény nevét. Más verziókban ez azt jelzi, hogy a függvények nem támogatottak. Megoldásként használhatja a WRAPCOLS alternatívát vagy a WRAPROWS alternatívát.

    #VALUE! hiba

    #VALUE hiba lép fel, ha a vektor argumentum nem egydimenziós tömb.

    #NUM! hiba

    #NUM hiba lép fel, ha a wrap_count értéke 0 vagy negatív szám.

    #SPILL! hiba

    Leggyakrabban a #SPILL hiba azt jelzi, hogy nincs elég üres cella az eredmények kiöntéséhez. Törölje a szomszédos cellákat, és a hiba megszűnik. Ha a hiba továbbra is fennáll, nézze meg, mit jelent a #SPILL az Excelben, és hogyan javíthatja ki.

    Így használhatjuk a WRAPCOLS és WRAPROWS függvényeket egy egydimenziós tartomány kétdimenziós tömbté alakításához az Excelben. Köszönöm, hogy elolvastad, és remélem, jövő héten találkozunk a blogon!

    Gyakorlati munkafüzet letölthető

    WRAPCOLS és WRAPROWS funkciók - példák (.xlsx fájl)

    Michael Brown elkötelezett technológiai rajongó, aki szenvedélyesen egyszerűsíti a bonyolult folyamatokat szoftvereszközök segítségével. A technológiai iparban szerzett több mint egy évtizedes tapasztalatával a Microsoft Excel és az Outlook, valamint a Google Táblázatok és a Dokumentumok területén fejlesztette tudását. Michael blogja célja, hogy megossza tudását és szakértelmét másokkal, könnyen követhető tippeket és oktatóanyagokat adva a termelékenység és a hatékonyság javításához. Akár tapasztalt szakember, akár kezdő, Michael blogja értékes betekintést és gyakorlati tanácsokat kínál, amelyek segítségével a legtöbbet hozhatja ki ezekből az alapvető szoftvereszközökből.