Converteix columna/fila en matriu a Excel: WRAPCOLS & Funcions WRAPROWS

  • Comparteix Això
Michael Brown

La manera més ràpida de transformar una columna o una fila de valors en una matriu bidimensional és utilitzar la funció WRAPCOLS o WRAPROWS.

Des dels primers dies d'Excel, ha estat molt bo per calcular i analitzar nombres. Però manipular matrius ha estat tradicionalment un repte. La introducció de matrius dinàmiques va facilitar molt l'ús de fórmules de matriu. I ara, Microsoft està llançant un conjunt de noves funcions de matriu dinàmica per manipular i remodelar les matrius. Aquest tutorial us ensenyarà com utilitzar dues d'aquestes funcions, WRAPCOLS i WRAPROWS, per transformar una columna o una fila en una matriu 2D en molt poc temps.

Funció WRAPCOLS d'Excel

La funció WRAPCOLS d'Excel transforma una fila o columna de valors en una matriu bidimensional en funció del nombre especificat de valors per fila.

La sintaxi té els arguments següents:

WRAPCOLS(vector, wrap_count, [pad_with])

On:

  • vector (obligatori) - la matriu o interval unidimensional d'origen.
  • wrap_count (obligatori): el nombre màxim de valors per columna.
  • pad_with (opcional) - el valor a omplir amb l'última columna si no hi ha prou elements per omplir-la. Si s'ometen, els valors que falten s'embolicaran amb #N/A (per defecte).

Per exemple, per canviar l'interval B5:B24 a una matriu bidimensional amb 5 valors per columna, el La fórmula és:

=WRAPROWS(B5:B24, 5)

Introduïu ell'argument vector no és una matriu unidimensional.

#NUM! error

Es produeix un error #NUM si el valor wrap_count és 0 o un nombre negatiu.

#SPILL! error

Molt sovint, un error #SPILL indica que no hi ha prou cel·les en blanc per abocar-hi els resultats. Netegeu les cel·les veïnes i desapareixerà. Si l'error persisteix, comproveu què significa #SPILL a Excel i com solucionar-ho.

Així és com utilitzar les funcions WRAPCOLS i WRAPROWS per convertir un rang unidimensional en una matriu bidimensional a Excel. Us agraeixo la lectura i espero veure-us al nostre bloc la setmana vinent!

Quader de pràctiques per descarregar

Funcions WRAPCOLS i WRAPROWS: exemples (fitxer .xlsx)

fórmula en qualsevol cel·la i automàticament s'aboca a tantes cel·les com sigui necessari. A la sortida WRAPCOLS, els valors s'organitzen verticalment, de dalt a baix, en funció del valor wrap_count. Un cop s'ha arribat al recompte, s'inicia una nova columna.

Funció WRAPROWS d'Excel

La funció WRAPROWS d'Excel converteix una fila o columna de valors en una matriu bidimensional en funció del nombre de valors per fila que especifiqueu.

La sintaxi és la següent:

WRAPROWS(vector, wrap_count, [pad_with])

On:

  • vector (obligatori) - la font unidimensional matriu o rang.
  • wrap_count (obligatori) - el nombre màxim de valors per fila.
  • pad_with (opcional) - el valor a pad amb l'última fila si no hi ha elements suficients per omplir-la. El valor predeterminat és #N/A.

Per exemple, per transformar l'interval B5:B24 en una matriu 2D amb 5 valors a cada fila, la fórmula és:

=WRAPROWS(B5:B24, 5)

Introduïu la fórmula a la cel·la superior esquerra de l'interval de vessament i omple totes les altres cel·les automàticament. La funció WRAPROWS organitza els valors horitzontalment, d'esquerra a dreta, en funció del valor wrap_count . Després d'arribar al recompte, comença una nova fila.

Disponibilitat de WRAPCOLS i WRAPROWS

Ambdues funcions només estan disponibles a Excel per a Microsoft 365 (Windows i Mac) i Excel per al web.

Abans.versions, podeu utilitzar fórmules tradicionals més complexes per realitzar transformacions de columna a matriu i fila a matriu. Més endavant en aquest tutorial, parlarem de les solucions alternatives en detall.

Consell. Per fer una operació inversa, és a dir, canviar una matriu 2D a una sola columna o fila, utilitzeu la funció TOCOL o TOROW, respectivament.

Com convertir columna/fila en rang a Excel: exemples

Ara que ja teniu una idea de l'ús bàsic, mirem més de prop alguns casos més específics.

Definiu el nombre màxim de valors per columna o fila

En funció de l'estructura de les vostres dades originals, és possible que us convingui reorganitzar-les en columnes (WRAPCOLS) o files (WRAPROWS). Sigui quina sigui la funció que utilitzeu, és l'argument wrap_count el que determina el nombre màxim de valors a cada columna/fila.

Per exemple, per transformar l'interval B4:B23 en una matriu 2D, perquè cada columna tingui un màxim de 10 valors, utilitzeu aquesta fórmula:

=WRAPCOLS(B4:B23, 10)

Per reordenar el mateix rang per fila, de manera que cada fila tingui un màxim de 4 valors, la fórmula és :

=WRAPROWS(B4:B23, 4)

La imatge següent mostra com es veu:

Els valors que falten a la matriu resultant

En cas que no hi hagi prou valors per omplir totes les columnes/files de l'interval resultant, WRAPROWS i WRAPCOLS retornaran errors #N/A per mantenir l'estructura de la matriu 2D.

Per canviar el valor predeterminatcomportament, podeu proporcionar un valor personalitzat per a l'argument opcional pad_with .

Per exemple, per transformar l'interval B4:B21 en una matriu 2D amb un màxim de 5 valors d'amplada, i relleu l'últim fila amb guions si no hi ha prou dades per omplir-la, utilitzeu aquesta fórmula:

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

Per substituir els valors que falten per cadenes de longitud zero (espais en blanc), la fórmula és:

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

Compareu els resultats amb el comportament predeterminat (fórmula a D5) on s'omet pad_with :

Combina diverses files en un rang 2D

Per combinar unes quantes files separades en una única matriu 2D, primer apileu les files horitzontalment mitjançant la funció HSTACK i, a continuació, embolcalleu els valors amb WRAPROWS o WRAPCOLS.

Per exemple, per combinar els valors de 3 files (B5:J5, B7:G7 i B9:F9) i embolcalla en columnes, cadascuna conté 10 valors, la fórmula és:

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

Per combinar valors de diverses files en un Interval 2D on cada fila conté 5 valors, la fórmula pren aquesta forma:

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

C combinar diverses columnes en una matriu 2D

Per combinar diverses columnes en un rang 2D, primer les apileu verticalment mitjançant la funció VSTACK i, a continuació, emboliqueu els valors en files (WRAPROWS) o columnes (WRAPCOLS).

Per exemple, per combinar els valors de 3 columnes (B5:J5, B7:G7 i B9:F9) en un rang 2D on cada columna conté 10 valors, la fórmula és:

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

Per combinar elmateixes columnes en un rang 2D on cada fila conté 5 valors, utilitzeu aquesta fórmula:

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

Embolcalla i ordena la matriu

En cas que l'interval d'origen tingui valors en ordre aleatori mentre voleu ordenar la sortida, procediu de la següent manera:

  1. Ordeneu la matriu inicial de la manera que vulgueu utilitzant la funció SORT.
  2. Suministreu la matriu ordenada a WRAPCOLS o WRAPROWS.

Per exemple, per embolicar l'interval B4:B23 en files, 4 valors a cadascuna i ordenar l'interval resultant de la A a la Z, construïu una fórmula com aquesta:

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

Per embolicar el mateix interval en columnes, 10 valors a cadascuna i ordenar la sortida alfabèticament, la fórmula és:

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

Els resultats tenen el següent aspecte :

Consell. Per organitzar els valors de la matriu resultant en ordre descendent , establiu el tercer argument ( sort_order ) de la funció SORT a -1.

alternativa WRAPCOLS per a Excel 365 - 2010

A les versions anteriors d'Excel on no s'admet la funció WRAPCOLS, podeu crear la vostra pròpia fórmula per embolicar els valors d'una matriu unidimensional en columnes. Això es pot fer utilitzant 5 funcions diferents juntes.

Alternativa WRAPCOLS per convertir una fila en un rang 2D:

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

WRAPCOLS alternativa per convertir una columna en 2D rang:

IFERROR(IF(ROW(A1)> n ,"", INDEX( interval_columna , FILA(A1) + (COLUMNA(A1)-1)* n )), "")

On n és el nombre màxim de valors per columna.

A la imatge següent, utilitzem la fórmula següent per convertir un rang d'una fila (D4:J4) en una matriu de tres files.

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

I aquesta fórmula canvia un rang d'una columna (B4:B20) en una matriu de cinc files:

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

Les solucions anteriors emulen les fórmules WRAPCOLS anàlogues i produir els mateixos resultats:

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

i

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

Tingueu en compte que, a diferència de la funció WRAPCOLS de matriu dinàmica, les fórmules tradicionals segueixen la enfocament d'una fórmula una cèl·lula. Per tant, la nostra primera fórmula s'introdueix a D8 i es copia 3 files cap avall i 3 columnes a la dreta. La segona fórmula s'introdueix a D14 i es copia 5 files cap avall i 4 columnes a la dreta.

Com funcionen aquestes fórmules

Al cor d'ambdues fórmules, utilitzem la funció INDEX que retorna un valor de la matriu subministrada en funció d'un número de fila i columna:

INDEX(array, row_num, [column_num])

Com que estem tractant amb una matriu d'una fila, podem ometre l'argument row_num , de manera que el valor predeterminat és 1. El truc és tenir col_num es calcula automàticament per a cada cel·la on es copia la fórmula. I així és com ho fem:

ROW(A1)+(COLUMN(A1)-1)*3)

La funció ROW retorna el número de fila de la referència A1, que és 1.

La funció COLUMN retorna el número de columna dela referència A1, que també és 1. Restant 1 el converteix en zero. I multiplicant 0 per 3 es dóna 0.

Aleshores, sumeu 1 retornat per FILA i 0 retornat per COLUMNA i obteniu 1 com a resultat.

D'aquesta manera, la fórmula INDEX a la part superior -la cel·la esquerra de l'interval de destinació (D8) experimenta aquesta transformació:

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

canvia a

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

i retorna el valor de la primera columna de la matriu especificada, que és "Pomes" a D4.

Quan la fórmula es copia a la cel·la D9, les referències relatives de la cel·la canvien en funció d'una posició relativa de files i columnes, mentre que la referència de l'interval absolut roman sense canvis:

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

es converteix en:

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

es converteix en:

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

i retorna el valor del 2a columna de la matriu especificada, que és "Albercocs" a E4.

La funció SI comprova el número de fila i si és més gran que el nombre de files que heu especificat (3 en el nostre cas) retorna una cadena buida ( ""), en cas contrari el resultat de la funció INDEX:

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

Finalment, la funció IFERROR corregeix un #REF! error que es produeix quan la fórmula es copia a més cel·les de les que realment es necessiten.

La segona fórmula que converteix una columna en un rang 2D funciona amb la mateixa lògica. La diferència és que utilitzeu la combinació ROW + COLUMN per esbrinar l'argument row_num per a INDEX. El paràmetre col_num no és necessari en aquest cas, ja que només n'hi hauna columna a la matriu font.

Alternativa WRAPROWS per a Excel 365 - 2010

Per embolicar els valors d'una matriu unidimensional en files a Excel 2019 i anteriors, podeu utilitzar les següents alternatives a la funció WRAPROWS.

Transformeu una fila en un rang 2D:

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

Canvia una columna a un rang 2D:

IFERROR(IF( COLUMNA(A1)> n , "", INDEX( interval_columna , COLUMNA(A1)+(FILERA(A1)-1)* n )) , "")

On n és el nombre màxim de valors per fila.

Al nostre conjunt de dades de mostra, utilitzem la fórmula següent per convertir un interval d'una fila (D4 :J4) en un rang de tres columnes. La fórmula arriba a la cel·la D8 i després es copia en 3 columnes i 3 files.

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

Per canviar la forma d'un rang d'1 columna (B4:B20) en un rang de 5 columnes, introduïu la fórmula següent a D14 i arrossegueu-la per 5 columnes i 4 files.

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

A Excel 365, es poden aconseguir els mateixos resultats amb les fórmules WRAPCOLS equivalents:

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

i

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

Com funcionen aquestes fórmules

Bàsicament, aquestes fórmules funcionen com a l'exemple anterior. La diferència està en com determineu les coordenades row_num i col_num per a la funció INDEX:

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

Per obtenir el número de columna de la part superior cel·la esquerra a l'interval de destinació (D8), feu servir aixòexpressió:

COLUMN(A1)+(ROW(A1)-1)*3)

que canvia a:

1+(1-1)*3

i dóna 1.

Com a resultat, la fórmula següent retorna el valor de la primera columna de la matriu especificada, que és "Apples":

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

Fins ara, el resultat és el mateix que a l'anterior exemple. Però anem a veure què passa a altres cel·les...

A la cel·la D9, les referències relatives de la cel·la canvien de la següent manera:

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

Per tant, la fórmula es transforma en:

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

es converteix en:

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

i retorna el valor de la quarta columna de la matriu especificada, que és "Cireres" a G4.

La funció SI comprova el número de columna i, si és més gran que el nombre de columnes que heu especificat, retorna una cadena buida (""), en cas contrari el resultat de la funció INDEX:

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

Com a toc final, IFERROR impedeix #REF! errors d'aparèixer a les cel·les "extra" si copieu la fórmula a més cel·les de les que realment necessiteu.

La funció WRAPCOLS o WRAPROWS no funciona

Si les funcions d'"embolcall" no estan disponibles a l'Excel o donar lloc a un error, és molt probable que sigui un dels motius següents.

#NAME? error

A Excel 365, un #NOM? Es pot produir un error perquè heu escrit malament el nom de la funció. En altres versions, indica que les funcions no són compatibles. Com a solució alternativa, podeu utilitzar l'alternativa WRAPCOLS o l'alternativa WRAPROWS.

#VALUE! error

Es produeix un error #VALUE si

Michael Brown és un entusiasta de la tecnologia dedicat amb una passió per simplificar processos complexos mitjançant eines de programari. Amb més d'una dècada d'experiència en la indústria tecnològica, ha perfeccionat les seves habilitats en Microsoft Excel i Outlook, així com en Google Sheets i Docs. El bloc de Michael es dedica a compartir els seus coneixements i experiència amb altres persones, oferint consells i tutorials fàcils de seguir per millorar la productivitat i l'eficiència. Tant si sou un professional experimentat com si sou un principiant, el bloc de Michael ofereix valuoses idees i consells pràctics per treure el màxim profit d'aquestes eines de programari essencials.