Converte columna/fila en matriz en Excel: WRAPCOLS & Funcións WRAPROWS

  • Comparte Isto
Michael Brown

A forma máis rápida de transformar unha columna ou fila de valores nunha matriz bidimensional é utilizar a función WRAPCOLS ou WRAPROWS.

Desde os primeiros días de Excel, foi moi bo calculando e analizando números. Pero manipular matrices foi tradicionalmente un desafío. A introdución de matrices dinámicas facilitou moito o uso das fórmulas de matriz. E agora, Microsoft está a lanzar un conxunto de novas funcións de matriz dinámica para manipular e remodelar as matrices. Este tutorial ensinarache como usar dúas funcións deste tipo, WRAPCOLS e WRAPROWS, para transformar unha columna ou fila nunha matriz 2D en pouco tempo.

Función WRAPCOLS de Excel

A función WRAPCOLS de Excel transforma unha fila ou columna de valores nunha matriz bidimensional en función do número especificado de valores por fila.

A sintaxe ten os seguintes argumentos:

WRAPCOLS(vector, wrap_count, [pad_with])

Onde:

  • vector (obrigatorio) - a matriz ou intervalo unidimensional de orixe.
  • wrap_count (obrigatorio): o número máximo de valores por columna.
  • pad_with (opcional) - o valor a rellenar coa última columna se non hai elementos suficientes para enchela. Se se omite, os valores que faltan encheranse con #N/A (predeterminado).

Por exemplo, para cambiar o intervalo B5:B24 a unha matriz bidimensional con 5 valores por columna, o a fórmula é:

=WRAPROWS(B5:B24, 5)

Introduce oo argumento vector non é unha matriz unidimensional.

#NUM! error

Prodúcese un erro #NUM se o valor wrap_count é 0 ou un número negativo.

#SPILL! error

Na maioría das veces, un erro #SPILL indica que non hai suficientes celas en branco para verter os resultados. Limpar as celas veciñas e desaparecerá. Se o erro persiste, consulta o que significa #SPILL en Excel e como solucionalo.

Así é como usar as funcións WRAPCOLS e WRAPROWS para converter un rango unidimensional nunha matriz bidimensional en Excel. Grazas por ler e espero verte no noso blogue a vindeira semana!

Practica para descargar

Funcións WRAPCOLS e WRAPROWS: exemplos (ficheiro .xlsx)

fórmula en calquera cela e derramase automaticamente en tantas celas como sexa necesario. Na saída WRAPCOLS, os valores están dispostos verticalmente, de arriba a abaixo, en función do valor wrap_count. Despois de alcanzar o reconto, comeza unha nova columna.

Función WRAPROWS de Excel

A función WRAPROWS de Excel converte unha fila ou columna de valores nunha matriz bidimensional en función do número de valores por fila que especifique.

A sintaxe é a seguinte:

WRAPROWS(vector, wrap_count, [pad_with])

Onde:

  • vector (obrigatorio) - a fonte unidimensional matriz ou intervalo.
  • wrap_count (obrigatorio): o número máximo de valores por fila.
  • pad_with (opcional) - o valor a almofada coa última fila se non hai elementos suficientes para enchela. O valor predeterminado é #N/A.

Por exemplo, para transformar o intervalo B5:B24 nunha matriz 2D con 5 valores en cada fila, a fórmula é:

=WRAPROWS(B5:B24, 5)

Introduza a fórmula na cela superior esquerda do intervalo de derrame e enche todas as demais celas automaticamente. A función WRAPROWS organiza os valores horizontalmente, de esquerda a dereita, en función do valor wrap_count . Despois de acadar o reconto, comeza unha nova fila.

Disponibilidade de WRAPCOLS e WRAPROWS

Ambas funcións só están dispoñibles en Excel para Microsoft 365 (Windows e Mac) e Excel para a web.

Anteriormente.versións, pode usar fórmulas tradicionais máis complexas para realizar transformacións de columna a matriz e de fila a matriz. Máis adiante neste titorial, comentaremos as solucións alternativas en detalle.

Consello. Para facer unha operación inversa, é dicir, cambiar unha matriz 2D a unha única columna ou fila, use a función TOCOL ou TOROW, respectivamente.

Como converter columna/fila en rango en Excel: exemplos

Agora que tes unha idea do uso básico, vexamos con máis detalle algúns casos máis específicos.

Establece o número máximo de valores por columna ou fila

Dependendo de A estrutura dos seus datos orixinais, pode considerar que se reorganiza en columnas (WRAPCOLS) ou filas (WRAPROWS). Sexa cal sexa a función que use, é o argumento wrap_count o que determina o número máximo de valores en cada columna/fila.

Por exemplo, para transformar o intervalo B4:B23 nunha matriz 2D, para que cada columna teña un máximo de 10 valores, use esta fórmula:

=WRAPCOLS(B4:B23, 10)

Para reorganizar o mesmo intervalo por fila, de xeito que cada fila teña un máximo de 4 valores, a fórmula é :

=WRAPROWS(B4:B23, 4)

A imaxe de abaixo móstrase así:

Almacen os valores que faltan na matriz resultante

No caso de que non haxa valores suficientes para cubrir todas as columnas/filas do intervalo resultante, WRAPROWS e WRAPCOLS devolverán erros #N/D para manter a estrutura da matriz 2D.

Para cambiar o valor predeterminadocomportamento, pode fornecer un valor personalizado para o argumento opcional pad_with .

Por exemplo, para transformar o intervalo B4:B21 nunha matriz 2D con un máximo de 5 valores de ancho e rellenar o último fila con trazos se non hai datos suficientes para enchela, use esta fórmula:

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

Para substituír os valores que faltan por cadeas de lonxitude cero (en branco), a fórmula é:

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

Compare os resultados co comportamento predeterminado (fórmula en D5) onde se omite pad_with :

Combina varias filas nun intervalo 2D

Para combinar algunhas filas separadas nunha única matriz 2D, primeiro apila as filas horizontalmente mediante a función HSTACK e, a continuación, envolve os valores mediante WRAPROWS ou WRAPCOLS.

Por exemplo, para combinar os valores de 3 filas (B5:J5, B7:G7 e B9:F9) e envolve en columnas, cada unha con 10 valores, a fórmula é:

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

Para combinar valores de varias filas nun Rango 2D onde cada fila contén 5 valores, a fórmula toma esta forma:

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

C combinar varias columnas nunha matriz 2D

Para combinar varias columnas nun intervalo 2D, primeiro apílaas verticalmente mediante a función VSTACK e despois envolve os valores en filas (WRAPROWS) ou columnas (WRAPCOLS).

Por exemplo, para combinar os valores de 3 columnas (B5:J5, B7:G7 e B9:F9) nun intervalo 2D onde cada columna conteña 10 valores, a fórmula é:

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

Para combinarmesmas columnas nun intervalo 2D onde cada fila contén 5 valores, use esta fórmula:

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

Envolver e ordenar a matriz

En caso de que o intervalo de orixe teña valores en orde aleatoria mentres desexa que se clasifique a saída, proceda deste xeito:

  1. Ordene a matriz inicial do xeito que desexe usando a función SORT.
  2. Fornece a matriz ordenada a WRAPCOLS ou WRAPROWS.

Por exemplo, para envolver o intervalo B4:B23 en filas, 4 valores en cada unha e ordenar o intervalo resultante de A a Z, constrúe unha fórmula como esta:

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

Para envolver o mesmo intervalo en columnas, 10 valores en cada unha e ordenar a saída alfabeticamente, a fórmula é:

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

Os resultados teñen o seguinte aspecto :

Consello. Para organizar os valores na matriz resultante en orde descendente , estableza o terceiro argumento ( ordenar_orde ) da función ORDENAR en -1.

Alternativa WRAPCOLS para Excel 365 - 2010

Nas versións anteriores de Excel onde non se admite a función WRAPCOLS, pode crear a súa propia fórmula para envolver os valores dunha matriz unidimensional en columnas. Isto pódese facer usando 5 funcións diferentes xuntas.

Alternativa WRAPCOLS para converter unha fila nun intervalo 2D:

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

WRAPCOLS alternativa para converter unha columna en 2D intervalo:

IFERROR(IF(FILA(A1)> n ,"", INDEX( intervalo_columna , FILA(A1) + (COLUNA(A1)-1)* n )), "")

Onde n é o número máximo de valores por columna.

Na imaxe de abaixo, usamos a seguinte fórmula para converter un intervalo dunha fila (D4:J4) nunha matriz de tres filas.

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

E esta fórmula cambia un rango dunha columna (B4:B20) nunha matriz de cinco filas:

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

As solucións anteriores emulan as fórmulas WRAPCOLS análogas e producir os mesmos resultados:

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

e

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

Teña en conta que, a diferenza da función WRAPCOLS de matriz dinámica, as fórmulas tradicionais seguen a enfoque dunha fórmula unha célula. Entón, a nosa primeira fórmula introdúcese en D8 e cópiase 3 filas cara abaixo e 3 columnas á dereita. A segunda fórmula introdúcese en D14 e cópiase 5 filas cara abaixo e 4 columnas á dereita.

Como funcionan estas fórmulas

No corazón de ambas fórmulas, usamos a función INDEX que devolve un valor da matriz proporcionada en función dun número de fila e columna:

INDEX(matriz, num_fila, [núm_columna])

Como estamos a tratar cunha matriz dunha fila, podemos omitir o argumento núm_fila , polo que o valor predeterminado é 1. O truco é ter col_num calcúlase automaticamente para cada cela onde se copia a fórmula. E así é como facemos isto:

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

A función ROW devolve o número de fila da referencia A1, que é 1.

A función COLUMN devolve o número de columna dea referencia A1, que tamén é 1. Restando 1 convérteo en cero. E multiplicando 0 por 3 dáse 0.

Despois, sumas 1 devolto por FILA e 0 devolto por COLUMNA e obtén 1 como resultado.

Deste xeito, a fórmula INDEX na parte superior -A cela esquerda do intervalo de destino (D8) sofre esta transformación:

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

cambia a

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

e devolve o valor da 1a columna da matriz especificada, que é "Mazás" en D4.

Cando se copia a fórmula na cela D9, as referencias relativas das celas cambian en función dunha posición relativa de filas e columnas mentres que a referencia do intervalo absoluto permanece sen cambios:

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

convértese en:

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

pasa a ser:

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

e devolve o valor do 2a columna da matriz especificada, que é "Albaricoques" en E4.

A función SE comproba o número de fila e se é maior que o número de filas que especificaches (3 no noso caso) devolve unha cadea baleira ( ""), se non, o resultado da función INDEX:

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

Finalmente, a función IFERROR corrixe un #REF! erro que se produce cando a fórmula se copia a máis celas das que realmente se necesitan.

A segunda fórmula que converte unha columna en intervalo 2D funciona coa mesma lóxica. A diferenza é que usas a combinación FILA + COLUMNA para descubrir o argumento núm_fila para INDEX. O parámetro col_num non é necesario neste caso xa que hai sóunha columna na matriz de orixe.

Alternativa WRAPROWS para Excel 365 - 2010

Para envolver os valores dunha matriz unidimensional en filas en Excel 2019 e anteriores, pode usar as seguintes alternativas á función WRAPROWS.

Transforma unha fila nun intervalo 2D:

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

Cambiar unha columna a rango 2D:

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

Onde n é o número máximo de valores por fila.

No noso conxunto de datos de mostra, utilizamos a seguinte fórmula para converter un intervalo dunha fila (D4 :J4) nun rango de tres columnas. A fórmula aterra na cela D8 e, a continuación, cópiase en 3 columnas e 3 filas.

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

Para remodelar un intervalo de 1 columna (B4:B20) nun intervalo de 5 columnas, introduza a seguinte fórmula en D14 e arrástrea por 5 columnas e 4 filas.

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

En Excel 365, pódense conseguir os mesmos resultados coas fórmulas WRAPCOLS equivalentes:

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

e

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

Como funcionan estas fórmulas

Esencialmente, estas fórmulas funcionan como no exemplo anterior. A diferenza está na forma en que determina as coordenadas row_num e col_num para a función INDEX:

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

Para obter o número de columna da parte superior cela da esquerda no intervalo de destino (D8), úsaoexpresión:

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

que cambia a:

1+(1-1)*3

e dá 1.

Como resultado, a seguinte fórmula devolve o valor da primeira columna da matriz especificada, que é "Apples":

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

Ata agora, o resultado é o mesmo que no anterior exemplo. Pero vexamos o que ocorre noutras celas...

Na cela D9, as referencias relativas das celas cambian do seguinte xeito:

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

Entón, a fórmula transfórmase en:

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

pasa a ser:

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

e devolve o valor da cuarta columna da matriz especificada, que é "Cereixas" en G4.

A función SE comproba o número de columna e, se é maior que o número de columnas especificado, devolve unha cadea baleira (""), se non, o resultado da función INDEX:

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

Como broche final, IFERROR impide #REF! erros de aparecer en celas "extra" se copia a fórmula a máis celas das que realmente necesita.

A función WRAPCOLS ou WRAPROWS non funciona

Se as funcións de "envolver" non están dispoñibles. no teu Excel ou producir un erro, o máis probable é que sexa un dos seguintes motivos.

#NAME? erro

En Excel 365, un #NAME? pode ocorrer un erro porque escribiu mal o nome da función. Noutras versións, indica que as funcións non son compatibles. Como solución alternativa, podes usar a alternativa WRAPCOLS ou a alternativa WRAPROWS.

#VALUE! error

Prodúcese un erro #VALUE se

Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.