Táboa de contidos
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:
- Ordene a matriz inicial do xeito que desexe usando a función SORT.
- 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