Taula de continguts
Una manera senzilla de transformar una matriu o un interval en una columna amb la funció TOCOL.
La capacitat de transposar dades de columnes a files i a la inversa ha estat a Excel des de fa bastant una estona. Però convertir un rang de cel·les en una sola columna va ser una tasca difícil de trencar. Ara, finalment això està canviant. Microsoft ha introduït una nova funció, anomenada TOCOL, que pot fer una transformació de matriu a columna en un parpelleig. A continuació es mostra una llista de tasques que aquesta nova funció pot resoldre fàcilment.
Funció TOCOL d'Excel
La funció TOCOL d'Excel converteix una matriu o rang de cel·les en una única columna.
La funció pren tres arguments, però només cal el primer.
TOCOL(matriu, [ignorar], [escanejar_per_columna])On:
Matriu (obligatori): una matriu o un interval per transformar en una columna.
Ignora (opcional) - defineix si s'han d'ignorar els espais en blanc o/o els errors. Pot ser un d'aquests valors:
- 0 o omès (per defecte) - mantenir tots els valors
- 1 - ignorar els espais en blanc
- 2 - ignorar els errors
- 3: ignora els espais en blanc i els errors
Scan_by_column (opcional) - determina si escaneja la matriu horitzontalment o verticalment:
- FALSE o s'omet (per defecte): escaneja la matriu per fila d'esquerra a dreta.
- VERTADER: explora la matriu per columna de dalt a baix.
Consells:
- Per convertir una matriu en una sola fila, utilitzeu TOROWfunció.
- Per fer la transformació oposada de columna a matriu, utilitzeu la funció WRAPCOLS per embolicar per columna o la funció WRAPROWS per embolicar per fila.
- Per transposar una matriu d'horitzontal a vertical o viceversa, és a dir, canvieu les files a columnes, utilitzeu la funció TRANSPOSE.
Disponibilitat de TOCOL
TOCOL és una funció nova, compatible amb Excel per a Microsoft 365 (per a Windows i Mac) i Excel per al web.
Fórmula TOCOL bàsica per transformar l'interval en columna
La fórmula TOCOL en la seva forma més senzilla només requereix un argument: matriu . Per exemple, per col·locar una matriu bidimensional que consta de 3 columnes i 4 files en una sola columna, la fórmula és:
=TOCOL(A2:C5)
La fórmula només s'introdueix en una cel·la (E2 a aquest exemple) i s'aboca automàticament a les cel·les següents. En termes d'Excel, el resultat s'anomena interval de vessament.
Com funciona aquesta fórmula:
Tècnicament, el rang A2:C5 es converteix primer en una matriu bidimensional. Tingueu en compte les files separades per punt i coma i les columnes delimitades per comes:
{"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}
La funció TOCOL escaneja la matriu d'esquerra a dreta i la transforma en una matriu vertical unidimensional:
{"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}
El resultat es col·loca a la cel·la E2, des de la qual s'aboca a les cel·les següents.
Com utilitzar la funció TOCOL a Excel - exemples de fórmules
Per obtenir més comprensió delpossibilitats de la funció TOCOL i quines tasques pot cobrir, donem un cop d'ull a alguns exemples de fórmules.
Transformar matriu en columna ignorant els espais en blanc i els errors
Com haureu notat a l'exemple anterior , la fórmula TOCOL predeterminada manté tots els valors de la matriu d'origen, incloses les cel·les en blanc i els errors.
A la matriu resultant, les cel·les buides es representen amb zeros, cosa que pot ser força confús, especialment si la matriu original té 0 valors. La solució és ometre espais en blanc . Per a això, establiu el segon argument a 1:
=TOCOL(A2:C5, 1)
Per ignorar els errors , establiu el segon argument a 2:
=TOCOL(A2:C5, 2)
Per excloure tots dos, espais en blanc i errors , utilitzeu 3 per a l'argument ignore :
=TOCOL(A2:C5, 3)
Escaneja la matriu horitzontalment o verticalment
Amb l'argument predeterminat scan_by_column (FALSE o omès), la funció TOCOL explora la matriu horitzontalment per fila. Per processar valors per columna, establiu aquest argument com a TRUE o 1. Per exemple:
=TOCOL(A2:C5, ,TRUE)
Observeu que, en ambdós casos, les matrius retornades tenen la mateixa mida, però els valors estan ordenats. en un ordre diferent.
Combina diversos rangs en una sola columna
Si estàs tractant amb diversos rangs no contigus, primer pots combinar els rangs verticalment en una sola matriu amb l'ajuda de la funció VSTACK i a continuació, utilitzeu TOCOL per transformar la matriu combinada en una columna.
Suposant que el primer rang és A2:C4 i el segon rang és A8:C9, la fórmula pren aquesta forma:
=TOCOL(VSTACK(A2:C4, A8:C9))
Aquesta fórmula demostra el comportament predeterminat: llegeix les matrius combinades horitzontalment des de l'esquerra. a la dreta, tal com es mostra a la columna E de la imatge següent.
Per llegir els valors verticalment de dalt a baix, establiu el tercer argument de TOCOL a TRUE:
=TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)
Si us plau, tingueu en compte que, en aquest cas, la fórmula retorna primer valors de la columna A d'ambdues matrius, després de la columna B, i així successivament. El motiu és que TOCOL escaneja una única matriu apilada, no els intervals individuals originals.
Si la vostra lògica empresarial requereix apilar els intervals originals horitzontalment en lloc de verticalment, feu servir la funció HSTACK en lloc de VSTACK.
Per afegir cada matriu posterior a la dreta de la matriu anterior i llegiu el matrius combinades horitzontalment, la fórmula és:
=TOCOL(HSTACK(A2:C4, A8:C10))
Per afegir cada matriu posterior a la dreta de la matriu anterior i escanejar les matrius combinades verticalment, la fórmula és:
=TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)
Extreu valors únics d'un interval de diverses columnes
La funció EXCEL UNIQUE pot trobar fàcilment únics en una sola columna o fila, així com retornar files úniques, però no pot extreure valors únics de una matriu de diverses columnes. La solució és utilitzar-lo juntament amb la funció TOCOL.
Per exemple, per extreure tots els diferents valors (diferents) de l'interval.A2:C7, la fórmula és:
=UNIQUE(TOCOL(A2:C7))
A més, podeu embolicar la fórmula anterior a la funció SORT per organitzar la matriu retornada en ordre alfabètic:
=SORT(UNIQUE(TOCOL(A2:C7)))
Com convertir l'interval en columna a Excel 365 - 2010
En les versions d'Excel on la funció TOCOL no s'admet, hi ha un parell de maneres alternatives de transformar un interval de cel·les en una columna. Aquestes solucions són bastant complicades, però de totes maneres funcionen.
Per llegir l'interval per fila:
INDEX( interval , QUOTIENT(ROW(A1)-1, COLUMNS( rang ))+1, MOD(LINEA(A1)-1, COLUMNS( interval ))+1)Per llegir l'interval per columna:
INDEX( rang , MOD(FILA(A1)-1, FILES( interval ))+1, QUOCIENT(FILA(A1)-1, FILES( interval ))+1 )Per al nostre conjunt de dades de mostra, les fórmules són les següents:
Per escanejar l'interval horitzontalment d'esquerra a dreta :
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
Aquesta fórmula és equivalent a la funció TOCOL amb el tercer argument establert a FALSE o omès:
=TOCOL(A2:C5)
Per escanejar l'interval verticalment de dalt a baix :
=INDEX($A$2:$C$5, MOD(ROW(A1)-1, ROWS($A$2:$C$5))+1, QUOTIENT(ROW(A1)-1, ROWS($A$2:$C$5))+1)
Aquesta fórmula és comparable a la funció TOCOL amb el tercer argument establert en TRUE:
=TOCOL(A2:C5, ,TRUE)
A diferència de TOCOL, les fórmules alternatives s'han d'introduir a cada una. cel·la on voleu que apareguin els resultats. En el nostre cas, les fórmules van a les cel·les E2 (per fila) i G2 (per columna) i després es copien a la fila 13.
Si les fórmules es copien a més files de les necessàries, un#REF! l'error apareixerà a les cel·les "extra". Per evitar que això succeeixi, podeu anidar les fórmules a la funció IFERROR de la següent manera:
=IFERROR(INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1), "")
Tingueu en compte que perquè les fórmules es copien correctament, bloquegem l'interval mitjançant referències de cel·les absolutes ($ A$2:$C$5). En lloc d'això, podeu utilitzar un interval amb nom.
Com funcionen aquestes fórmules
A continuació es mostra un desglossament detallat de la primera fórmula que organitza les cel·les per fila:
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
La idea és utilitzar la funció INDEX per retornar el valor d'una cel·la determinada en funció dels seus números relatius de fila i columna de l'interval.
El número de fila es calcula amb aquesta combinació. :
QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
QUOCIENT retorna la part entera d'una divisió.
Per a numerador , feu servir ROW(A1)-1, que retorna un número de sèrie de 0 a E2 (primera cel·la on s'ha introduït la fórmula) a 11 a E13 (l'última cel·la on s'ha introduït la fórmula).
El denominador portat per COLUMNS($A $2:$C$5)) és constant i és igual al nombre de columnes del vostre interval (3 en el nostre cas).
Ara, si comproveu el resultat del QUOCIENT per a les 3 primeres cel·les (E2:E4) , veureu que és igual a 0 (perquè la part sencera de la divisió és zero). Afegir 1 dóna el número de fila 1.
Per a les 3 cel·les següents (E5:E5), QUOCIENT retorna 1 i l'operació +1 proporciona el número de fila 2. I així successivament.
En altres paraules, aquesta part de la fórmula crea una repeticióseqüència numèrica com ara 1,1,1,2,2,2,3,3,3,4,4,4,... Cada número es repeteix tantes vegades com hi hagi columnes al vostre rang.
Per calculeu el número de columna , creeu una seqüència numèrica adequada mitjançant la funció MOD:
MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
Com que hi ha 3 columnes al nostre rang (A2:C5), el la seqüència ha de ser 1,2,3,1,2,3,...
La funció MOD retorna la resta després de la divisió.
A E2, MOD(ROW(A1)-1, COLUMNS ($A$2:$C$5))+1)
es converteix en
MOD(1-1, 3)+1)
i retorna 1.
A E3, MOD(FILERA(A2)-1, COLUMNS($A$2:$C$5))+1)
es converteix en
MOD(2-1, 3) +1)
i retorna 2.
Amb els números de fila i columna establerts, INDEX no té problemes per obtenir el valor requerit.
A E2, INDEX($A$2 :$C$5, 1, 1) retorna el valor de la 1a fila i la 1a columna de l'interval de referència, és a dir, de la cel·la A2.
A E3, INDEX($A$2:$C$5, 1). , 2) retorna el valor de la 1a fila i la 2a columna, és a dir, de la cel·la B2.
I així successivament.
La segona fórmula que explora l'interval per c olumn, funciona de manera similar. La diferència és que utilitza MOD per obtenir el número de fila i QUOTIENT per obtenir el número de columna.
La funció TOCOL no funciona
Si la funció TOCOL genera un error, és molt probable que per ser un d'aquests motius:
TOCOL no s'admet al vostre Excel
Quan obteniu un #NAME? error, l'ortografia correcta del nom de la funció és el primer que calcomprovar. Si el nom és correcte però l'error persisteix, la funció no està disponible a la vostra versió d'Excel. En aquest cas, considereu utilitzar una alternativa TOCOL.
La matriu és massa gran
Un error #NUM indica que la matriu no pot cabre en una columna. Un cas típic és quan feu referència a columnes o files senceres.
No hi ha prou cel·les buides
Quan es produeix un error #SPILL, comproveu que la columna on s'introdueix la fórmula té prou cel·les buides per omplir-se amb els resultats. Si les cel·les estan visualment en blanc, assegureu-vos que no hi hagi espais ni altres caràcters que no s'imprimeixin. Per obtenir més informació, vegeu Com corregir l'error #SPILL a Excel.
Així és com podeu utilitzar la funció TOCOL a Excel 365 i solucions alternatives en versions anteriors per transformar una matriu bidimensional en una sola columna. Us agraeixo la lectura i espero veure-us al nostre bloc la setmana vinent!
Quader de pràctiques
Funció TOCOL d'Excel - exemples de fórmules (fitxer .xlsx)