Conversia coloanei / rândului în matrice în Excel: funcțiile WRAPCOLS & WRAPROWS

  • Imparte Asta
Michael Brown

Cel mai rapid mod de a transforma o coloană sau un rând de valori într-o matrice bidimensională este utilizarea funcției WRAPCOLS sau WRAPROWS.

Încă din primele zile ale Excel, acesta a fost foarte bun la calcularea și analiza numerelor. Dar manipularea array-urilor a fost în mod tradițional o provocare. Introducerea array-urilor dinamice a făcut ca utilizarea formulelor array-urilor să fie mult mai ușoară. Iar acum, Microsoft lansează un set de noi funcții array dinamice pentru a manipula și remodela array-urile. Acest tutorial vă va învăța cum să utilizați două astfel de funcții,WRAPCOLS și WRAPROWS, pentru a transforma o coloană sau un rând într-o matrice 2D în cel mai scurt timp.

    Funcția Excel WRAPCOLS

    Funcția WRAPCOLS din Excel transformă un rând sau o coloană de valori într-o matrice bidimensională pe baza numărului specificat de valori pe rând.

    Sintaxa are următoarele argumente:

    WRAPCOLS(vector, wrap_count, [pad_with])

    Unde:

    • vector (obligatoriu) - matricea sau intervalul unidimensional sursă.
    • wrap_count (obligatoriu) - numărul maxim de valori pe coloană.
    • pad_with (opțional) - valoarea care urmează să fie completată cu ultima coloană dacă nu există suficiente elemente pentru a o umple. Dacă se omite, valorile lipsă vor fi completate cu #N/A (valoare implicită).

    De exemplu, pentru a schimba intervalul B5:B24 într-o matrice bidimensională cu 5 valori pe coloană, formula este:

    =WRAPROWS(B5:B24, 5)

    Introduceți formula în orice singură celulă și aceasta se revarsă automat în câte celule sunt necesare. În rezultatul WRAPCOLS, valorile sunt aranjate vertical, de sus în jos, pe baza formulei wrap_count După ce se atinge numărul, se începe o nouă coloană.

    Funcția Excel WRAPROWS

    Funcția WRAPROWS din Excel convertește un rând sau o coloană de valori într-o matrice bidimensională pe baza numărului de valori pe rând pe care îl specificați.

    Sintaxa este următoarea:

    WRAPROWS(vector, wrap_count, [pad_with])

    Unde:

    • vector (obligatoriu) - matricea sau intervalul unidimensional sursă.
    • wrap_count (obligatoriu) - numărul maxim de valori pe rând.
    • pad_with (opțional) - valoarea care se completează cu ultimul rând în cazul în care nu există suficiente elemente pentru a-l umple. Valoarea implicită este #N/A.

    De exemplu, pentru a transforma intervalul B5:B24 într-o matrice 2D cu 5 valori pe fiecare rând, formula este:

    =WRAPROWS(B5:B24, 5)

    Introduceți formula în celula din stânga-sus a intervalului de deversare, iar aceasta se completează automat în toate celelalte celule. Funcția WRAPROWS aranjează valorile pe orizontală, de la stânga la dreapta, în funcție de wrap_count După ce se atinge numărul, se începe un nou rând.

    Disponibilitatea WRAPCOLS și WRAPROWS

    Ambele funcții sunt disponibile numai în Excel pentru Microsoft 365 (Windows și Mac) și Excel pentru web.

    În versiunile anterioare, puteți utiliza formule tradiționale mai complexe pentru a efectua transformări de la coloană la tablă și de la rând la tablă. În continuare, în acest tutorial, vom discuta în detaliu soluțiile alternative.

    Sfat: Pentru a efectua o operație inversă, adică pentru a schimba o matrice 2D într-o singură coloană sau într-un singur rând, utilizați funcția TOCOL sau, respectiv, TOROW.

    Cum să convertiți coloana / rândul în interval în Excel - exemple

    Acum că ați înțeles utilizarea de bază, să analizăm mai îndeaproape câteva cazuri mai specifice.

    Setați numărul maxim de valori pe coloană sau rând

    În funcție de structura datelor originale, este posibil să vi se pară potrivită rearanjarea în coloane (WRAPCOLS) sau rânduri (WRAPROWS). Indiferent de funcția pe care o utilizați, este vorba de wrap_count care determină numărul maxim de valori din fiecare coloană/rând.

    De exemplu, pentru a transforma intervalul B4:B23 într-o matrice 2D, astfel încât fiecare coloană să aibă maximum 10 valori, utilizați această formulă:

    =WRAPCOLS(B4:B23, 10)

    Pentru a rearanja același interval pe rând, astfel încât fiecare rând să aibă maximum 4 valori, formula este:

    =WRAPROWS(B4:B23, 4)

    Imaginea de mai jos arată cum arată acest lucru:

    Introduceți valorile lipsă în matricea rezultată

    În cazul în care nu există valori suficiente pentru a umple toate coloanele/ rândurile intervalului rezultat, WRAPROWS și WRAPCOLS vor returna erorile #N/A pentru a păstra structura matricei 2D.

    Pentru a modifica comportamentul implicit, puteți furniza o valoare personalizată pentru opțiunea opțională pad_with argument.

    De exemplu, pentru a transforma intervalul B4:B21 într-o matrice 2D cu o lățime maximă de 5 valori și pentru a umple ultimul rând cu liniuțe în cazul în care nu există suficiente date pentru a-l umple, utilizați această formulă:

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

    Pentru a înlocui valorile lipsă cu șiruri de lungime zero (spații libere), formula este:

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

    Vă rugăm să comparați rezultatele cu comportamentul implicit (formula din D5), unde pad_with este omis:

    Uniți mai multe rânduri în interval 2D

    Pentru a combina câteva rânduri separate într-o singură matrice 2D, mai întâi se stivuiesc rândurile pe orizontală cu ajutorul funcției HSTACK, iar apoi se împachetează valorile folosind WRAPROWS sau WRAPCOLS.

    De exemplu, pentru a unifica valorile din 3 rânduri (B5:J5, B7:G7 și B9:F9) și a le grupa în coloane, fiecare conținând 10 valori, formula este:

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

    Pentru a combina valorile din mai multe rânduri într-un interval 2D în care fiecare rând conține 5 valori, formula are următoarea formă:

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

    Combinați mai multe coloane într-o matrice 2D

    Pentru a unifica mai multe coloane într-un interval 2D, mai întâi le stivuiți pe verticală cu ajutorul funcției VSTACK, iar apoi împachetați valorile în rânduri (WRAPROWS) sau coloane (WRAPCOLS).

    De exemplu, pentru a combina valorile din 3 coloane (B5:J5, B7:G7 și B9:F9) într-un interval 2D în care fiecare coloană conține 10 valori, formula este:

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

    Pentru a combina aceleași coloane într-un interval 2D în care fiecare rând conține 5 valori, utilizați această formulă:

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

    Înfășurați și sortați array-ul

    În situația în care intervalul sursă are valori în ordine aleatorie, iar la ieșire se dorește o sortare, procedați astfel:

    1. Sortați matricea inițială așa cum doriți, utilizând funcția SORT.
    2. Furnizează matricea sortată către WRAPCOLS sau WRAPROWS.

    De exemplu, pentru a înfășura intervalul B4:B23 în rânduri, cu 4 valori în fiecare rând, și pentru a sorta intervalul rezultat de la A la Z, construiți o formulă ca aceasta:

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

    Pentru a împărți același interval în coloane, cu câte 10 valori în fiecare, și a sorta rezultatul în ordine alfabetică, formula este:

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

    Rezultatele arată după cum urmează:

    Sfat. Pentru a aranja valorile din matricea rezultată în ordine descrescătoare , setează al treilea argument ( sort_order ) a funcției SORT la -1.

    Alternativa WRAPCOLS pentru Excel 365 - 2010

    În versiunile mai vechi de Excel, în care funcția WRAPCOLS nu este acceptată, puteți construi propria formulă pentru a înfășura valorile dintr-o matrice unidimensională în coloane. Acest lucru poate fi realizat prin utilizarea simultană a 5 funcții diferite.

    Alternativa WRAPCOLS pentru a converti un rând în interval 2D:

    IFERROR(IF(ROW(A1)> n , "", INDEX( rând_range , , ROW(A1) + (COLUMN(A1)-1)* n )), "")

    Alternativa WRAPCOLS pentru a converti o coloană în interval 2D:

    IFERROR(IF(ROW(A1)> n , "", INDEX( interval_coloană , RÂND(A1) + (COLOANĂ(A1)-1)* n )), "")

    Unde n este numărul maxim de valori pe coloană.

    În imaginea de mai jos, folosim următoarea formulă pentru a transforma un interval cu un rând (D4:J4) într-o matrice cu trei rânduri.

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

    Și această formulă schimbă un interval de o coloană (B4:B20) într-o matrice de cinci rânduri:

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

    Soluțiile de mai sus imită formulele WRAPCOLS analoge și produc aceleași rezultate:

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

    și

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

    Vă rugăm să rețineți că, spre deosebire de funcția WRAPCOLS a tabloului dinamic, formulele tradiționale urmează abordarea o formulă - o celulă. Astfel, prima noastră formulă este introdusă în D8 și copiată 3 rânduri în jos și 3 coloane la dreapta. A doua formulă este introdusă în D14 și copiată 5 rânduri în jos și 4 coloane la dreapta.

    Cum funcționează aceste formule

    În centrul ambelor formule, folosim funcția INDEX care returnează o valoare din matricea furnizată pe baza unui număr de rânduri și coloane:

    INDEX(array, row_num, [column_num])

    Deoarece avem de-a face cu o matrice cu un singur rând, putem omite număr_ rând astfel încât valoarea implicită este 1. Șmecheria constă în a avea col_num calculată automat pentru fiecare celulă în care este copiată formula. Și iată cum facem acest lucru:

    RÂND(A1)+(COLOANĂ(A1)-1)*3)

    Funcția ROW returnează numărul de rând al referinței A1, care este 1.

    Funcția COLUMN returnează numărul de coloană al referinței A1, care este de asemenea 1. Scăzând 1, se transformă în zero. Și înmulțind 0 cu 3 se obține 0.

    Apoi, se adună 1 returnat de ROW și 0 returnat de COLUMN și se obține 1 ca rezultat.

    În acest fel, formula INDEX din celula din stânga-sus a intervalului de destinație (D8) suferă această transformare:

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

    modificări la

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

    și returnează valoarea din prima coloană a tabloului specificat, care este "Mere" în D4.

    Atunci când formula este copiată în celula D9, referințele relative ale celulelor se modifică pe baza unei poziții relative a rândurilor și coloanelor, în timp ce referința absolută a intervalului rămâne neschimbată:

    INDEX($D$4:$J$4,, RÂNDUL(A2)+(COLOANA(A2)-1)*3))

    se transformă în:

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

    devine:

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

    și returnează valoarea din cea de-a doua coloană a tabloului specificat, care este "Caisă" în E4.

    Funcția IF verifică numărul de rânduri și, dacă acesta este mai mare decât numărul de rânduri pe care l-ați specificat (3 în cazul nostru), returnează un șir gol (""), în caz contrar, rezultatul funcției INDEX:

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

    În cele din urmă, funcția IFERROR corectează o eroare #REF! care apare atunci când formula este copiată în mai multe celule decât este necesar.

    Cea de-a doua formulă care convertește o coloană în interval 2D funcționează cu aceeași logică. Diferența este că se folosește combinația ROW + COLUMN pentru a afla valoarea număr_ rând pentru INDEX. Argumentul col_num nu este necesar în acest caz, deoarece există doar o singură coloană în matricea sursă.

    Alternativa WRAPROWS pentru Excel 365 - 2010

    Pentru a înfășura valorile dintr-o matrice unidimensională în rânduri în Excel 2019 și versiunile anterioare, puteți utiliza următoarele alternative la funcția WRAPROWS.

    Transformă un rând în interval 2D:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( rând_range , , COLOANA(A1)+(RÂNDUL(A1)-1)* n )), "")

    Modificarea unei coloane în interval 2D:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( interval_coloană , COLUMN(A1)+(ROW(A1)-1)* n )), "")

    Unde n este numărul maxim de valori pe rând.

    În setul nostru de date de exemplu, folosim următoarea formulă pentru a converti un interval de un rând (D4:J4) într-un interval de trei coloane. Formula ajunge în celula D8, apoi este copiată pe 3 coloane și 3 rânduri.

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

    Pentru a remodela un interval de 1 coloană (B4:B20) într-un interval de 5 coloane, introduceți formula de mai jos în D14 și trageți-o pe 5 coloane și 4 rânduri.

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

    În Excel 365, aceleași rezultate pot fi obținute cu ajutorul formulelor WRAPCOLS echivalente:

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

    și

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

    Cum funcționează aceste formule

    În esență, aceste formule funcționează la fel ca în exemplul anterior. Diferența constă în modul în care se determină valoarea număr_ rând și col_num coordonate pentru funcția INDEX:

    INDEX($D$4:$J$4,, COLOANA(A1)+(RÂNDUL(A1)-1)*3))

    Pentru a obține numărul de coloană pentru celula din stânga sus din intervalul de destinație (D8), utilizați această expresie:

    COLOANA(A1)+(RÂNDUL(A1)-1)*3)

    care se schimbă în:

    1+(1-1)*3

    și dă 1.

    Ca urmare, formula de mai jos returnează valoarea din prima coloană a matricei specificate, care este "Mere":

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

    Până acum, rezultatul este același ca în exemplul anterior, dar să vedem ce se întâmplă în alte celule...

    În celula D9, referințele relative ale celulelor se modifică după cum urmează:

    INDEX($D$4:$J$4,, COLOANA(A2)+(RÂNDUL(A2)-1)*3))

    Deci, formula se transformă în:

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

    devine:

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

    și returnează valoarea din a patra coloană a tabloului specificat, care este "Cireșe" în G4.

    Funcția IF verifică numărul de coloane și, dacă acesta este mai mare decât numărul de coloane pe care l-ați specificat, returnează un șir de caractere gol ("""), în caz contrar, rezultatul funcției INDEX:

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

    Ca o notă finală, IFERROR previne apariția erorilor #REF! în celulele "suplimentare" dacă copiați formula în mai multe celule decât este necesar.

    Funcția WRAPCOLS sau WRAPROWS nu funcționează

    În cazul în care funcțiile "wrap" nu sunt disponibile în Excel sau dau o eroare, cel mai probabil este vorba de unul dintre motivele de mai jos.

    #NAME? eroare

    În Excel 365, este posibil să apară o eroare #NAME? deoarece ați scris greșit numele funcției. În alte versiuni, aceasta indică faptul că funcțiile nu sunt acceptate. Ca soluție, puteți utiliza alternativa WRAPCOLS sau alternativa WRAPROWS.

    Eroare #VALUE!

    Apare o eroare #VALUE dacă vector nu este o matrice unidimensională.

    #NUM! eroare

    O eroare #NUM apare dacă wrap_count valoarea este 0 sau un număr negativ.

    #SPILL! eroare

    De cele mai multe ori, o eroare #SPILL indică faptul că nu există suficiente celule goale în care să se verse rezultatele. Eliberați celulele vecine și va dispărea. Dacă eroarea persistă, verificați ce înseamnă #SPILL în Excel și cum să o remediați.

    Iată cum se utilizează funcțiile WRAPCOLS și WRAPROWS pentru a converti un interval unidimensional într-o matrice bidimensională în Excel. Vă mulțumesc pentru lectură și sper să ne vedem pe blog săptămâna viitoare!

    Caietul de practică pentru descărcare

    Funcțiile WRAPCOLS și WRAPROWS - exemple (fișier .xlsx)

    Michael Brown este un pasionat de tehnologie dedicat, cu o pasiune pentru simplificarea proceselor complexe folosind instrumente software. Cu mai mult de un deceniu de experiență în industria tehnologiei, el și-a perfecționat abilitățile în Microsoft Excel și Outlook, precum și în Google Sheets și Docs. Blogul lui Michael este dedicat împărtășirii cunoștințelor și experienței sale cu alții, oferind sfaturi și tutoriale ușor de urmat pentru îmbunătățirea productivității și eficienței. Indiferent dacă sunteți un profesionist experimentat sau un începător, blogul lui Michael oferă informații valoroase și sfaturi practice pentru a profita la maximum de aceste instrumente software esențiale.