Cuprins
O modalitate simplă de a transforma un array sau un interval într-o coloană cu ajutorul funcției TOCOL.
Posibilitatea de a transpune datele din coloane în rânduri și invers este prezentă în Excel de ceva vreme. Dar convertirea unui interval de celule într-o singură coloană era o sarcină dificilă de rezolvat. Acum, acest lucru se schimbă în sfârșit. Microsoft a introdus o nouă funcție, numită TOCOL, care poate face o transformare din matrice în coloană într-o clipită. Mai jos este o listă de sarcini pe care această nouă funcție le poate rezolva cu ușurință.
Funcția Excel TOCOL
Funcția TOCOL din Excel convertește o matrice sau un interval de celule într-o singură coloană.
Funcția primește trei argumente, dar numai primul este necesar.
TOCOL(array, [ignore], [scan_by_column])Unde:
Array (obligatoriu) - o matrice sau un interval care trebuie transformat într-o coloană.
Ignoră (opțional) - definește dacă trebuie ignorate spațiile libere și/sau erorile. Poate fi una dintre aceste valori:
- 0 sau omis (implicit) - păstrează toate valorile
- 1 - ignorați spațiile libere
- 2 - ignorați erorile
- 3 - ignorați spațiile libere și erorile
Scan_by_columna (opțional) - determină dacă matricea trebuie scanată pe orizontală sau pe verticală:
- FALSE sau omis (implicit) - scanează matricea pe rând, de la stânga la dreapta.
- TRUE - scanează matricea pe coloane de sus în jos.
Sfaturi:
- Pentru a converti o matrice într-un singur rând, utilizați funcția TOROW.
- Pentru a efectua transformarea inversă, de la coloană la matrice, utilizați fie funcția WRAPCOLS pentru a înfășura prin coloană, fie funcția WRAPROWS pentru a înfășura prin rând.
- Pentru a transpune o matrice din orizontală în verticală sau invers, adică pentru a schimba rândurile în coloane, utilizați funcția TRANSPOSE.
Disponibilitatea TOCOL
TOCOL este o funcție nouă, care este acceptată în Excel pentru Microsoft 365 (pentru Windows și Mac) și Excel pentru web.
Formula de bază TOCOL pentru a transforma intervalul în coloană
Formula TOCOL, în forma sa cea mai simplă, necesită un singur argument - array De exemplu, pentru a plasa o matrice bidimensională formată din 3 coloane și 4 rânduri într-o singură coloană, formula este:
=TOCOL(A2:C5)
Formula este introdusă doar într-o singură celulă (E2 în acest exemplu) și se revarsă automat în celulele de mai jos. În termeni de Excel, rezultatul se numește interval de revărsare.
Cum funcționează această formulă:
Din punct de vedere tehnic, intervalul A2:C5 este mai întâi convertit într-o matrice bidimensională. Vă rugăm să observați rândurile separate prin punct și virgulă și coloanele delimitate prin virgulă:
{"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}
Funcția TOCOL scanează matricea de la stânga la dreapta și o transformă într-o matrice verticală unidimensională:
{"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}
Rezultatul este plasat în celula E2, de unde se varsă în celulele de mai jos.
Cum se utilizează funcția TOCOL în Excel - exemple de formule
Pentru a înțelege mai bine posibilitățile funcției TOCOL și sarcinile pe care le poate îndeplini, să analizăm câteva exemple de formule.
Transformă matricea în coloană, ignorând spațiile libere și erorile
După cum ați observat în exemplul anterior, formula implicită TOCOL păstrează toate valorile din matricea sursă, inclusiv celulele goale și erorile.
În matricea rezultată, celulele goale sunt reprezentate prin zerouri, ceea ce poate fi destul de confuz, mai ales dacă matricea originală are valori 0. Soluția este următoarea săriți peste spații libere Pentru aceasta, setați al doilea argument la 1:
=TOCOL(A2:C5, 1)
La ignorați erorile , setați al doilea argument la 2:
=TOCOL(A2:C5, 2)
Pentru a le exclude pe amândouă, spații libere și erori , utilizați 3 pentru ignorați argument:
=TOCOL(A2:C5, 3)
Scanarea matricei pe orizontală sau pe verticală
Cu valoarea implicită scan_by_columna (FALSE sau omis), funcția TOCOL scanează matricea orizontal pe rând. Pentru a procesa valorile pe coloană, setați acest argument la TRUE sau 1. De exemplu:
=TOCOL(A2:C5, ,TRUE)
Observați că, în ambele cazuri, array-urile returnate au aceeași dimensiune, dar valorile sunt aranjate într-o ordine diferită.
Combinați mai multe intervale într-o singură coloană
În cazul în care aveți de-a face cu mai multe intervale neconcordante, puteți mai întâi să combinați intervalele pe verticală într-un singur array cu ajutorul funcției VSTACK și apoi să utilizați TOCOL pentru a transforma array-ul combinat într-o coloană.
Presupunând că primul interval este A2:C4 și al doilea interval este A8:C9, formula are forma următoare:
=TOCOL(VSTACK(A2:C4, A8:C9))
Această formulă demonstrează comportamentul implicit - citește matricele combinate pe orizontală de la stânga la dreapta, așa cum se arată în coloana E din imaginea de mai jos.
Pentru a citi valorile pe verticală, de sus în jos, setați al treilea argument al TOCOL la TRUE:
=TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)
Vă rugăm să fiți atenți la faptul că, în acest caz, formula returnează mai întâi valorile din coloana A a ambelor array-uri, apoi din coloana B și așa mai departe. Motivul este că TOCOL scanează un singur array stivuit, nu intervalele individuale originale.
În cazul în care logica de afaceri necesită stivuirea intervalelor originale pe orizontală și nu pe verticală, utilizați funcția HSTACK în loc de VSTACK.
Pentru a adăuga fiecare tablou următor la dreapta tabloului anterior și pentru a citi tablourile combinate pe orizontală, formula este:
=TOCOL(HSTACK(A2:C4, A8:C10))
Pentru a adăuga fiecare tablou următor la dreapta tabloului anterior și pentru a scana pe verticală tablourile combinate, formula este:
=TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)
Extrageți valori unice dintr-un interval cu mai multe coloane
Funcția Excel UNIQUE poate găsi cu ușurință valori unice într-o singură coloană sau rând, precum și să returneze rânduri unice, dar nu poate extrage valori unice dintr-o matrice cu mai multe coloane. Soluția este de a o utiliza împreună cu funcția TOCOL.
De exemplu, pentru a extrage toate valorile diferite (distincte) din intervalul A2:C7, formula este:
=UNIQUE(TOCOL(A2:C7))
În plus, puteți include formula de mai sus în funcția SORT pentru a aranja matricea returnată în ordine alfabetică:
=SORT(UNIQUE(TOCOL(A2:C7)))
Cum să convertiți intervalul în coloană în Excel 365 - 2010
În versiunile Excel în care funcția TOCOL nu este suportată, există câteva modalități alternative de a transforma un interval de celule într-o coloană. Aceste soluții sunt destul de complicate, dar oricum funcționează.
Pentru a citi intervalul pe rând:
INDEX( gama , COEFICIENT(RÂND(A1)-1, COLOANE( gama ))+1, MOD(RÂND(A1)-1, COLOANE( gama ))+1)Pentru a citi intervalul pe coloane:
INDEX( gama , MOD(RÂND(A1)-1, RÂNDURI( gama ))+1, QUOTIENT(RÂND(A1)-1, RÂNDURI( gama ))+1)Pentru eșantionul nostru de date, formulele sunt următoarele:
Pentru a scana gama orizontal de la stânga la dreapta :
=INDEX($A$2:$C$5, QUOTIENT(RÂND(A1)-1, COLOANE($A$2:$C$5))+1, MOD(RÂND(A1)-1, COLOANE($A$2:$C$5))+1)
Această formulă este echivalentă cu funcția TOCOL cu al treilea argument setat la FALSE sau omis:
=TOCOL(A2:C5)
Pentru a scana gama pe verticală, de sus în jos :
=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)
Această formulă este comparabilă cu funcția TOCOL cu al treilea argument setat la TRUE:
=TOCOL(A2:C5, ,TRUE)
Spre deosebire de TOCOL, formulele alternative trebuie introduse în fiecare celulă în care doriți ca rezultatele să apară. În cazul nostru, formulele sunt introduse în celulele E2 (pe rând) și G2 (pe coloană), iar apoi sunt copiate în jos, în rândul 13.
Dacă formulele sunt copiate pe mai multe rânduri decât este necesar, în celulele "suplimentare" va apărea o eroare #REF! Pentru a preveni acest lucru, puteți anina formulele în funcția IFERROR astfel:
=IFERROR(INDEX($A$2:$C$5, QUOTIENT(RÂND(A1)-1, COLOANE($A$2:$C$5))+1, MOD(RÂND(A1)-1, COLOANE($A$2:$C$5))+1), "")
Observați că, pentru ca formulele să fie copiate corect, blocăm intervalul folosind referințe absolute de celule ($A$2:$C$5). În schimb, puteți folosi un interval numit.
Cum funcționează aceste formule
Mai jos este prezentată o detaliere a primei formule care aranjează celulele în funcție de rând:
=INDEX($A$2:$C$5, QUOTIENT(RÂND(A1)-1, COLOANE($A$2:$C$5))+1, MOD(RÂND(A1)-1, COLOANE($A$2:$C$5))+1)
Ideea este de a utiliza funcția INDEX pentru a returna valoarea unei anumite celule pe baza numerelor de rând și de coloană aferente din interval.
The numărul rândului se calculează prin această combinație:
COEFICIENT(RÂND(A1)-1, COLOANE($A$2:$C$5))+1
QUOTIENT returnează partea întreagă a unei diviziuni.
Pentru numărător , utilizați ROW(A1)-1, care returnează un număr de serie de la 0 în E2 (prima celulă în care se introduce formula) la 11 în E13 (ultima celulă în care se introduce formula).
The numitor (adus de COLUMNS($A$2:$C$5)) este constant și este egal cu numărul de coloane din intervalul dvs. (3 în cazul nostru).
Acum, dacă verificați rezultatul QUOTIENT pentru primele 3 celule (E2:E4), veți vedea că este egal cu 0 (deoarece partea întreagă a împărțirii este zero). Adăugând 1, veți obține numărul de rând 1.
Pentru următoarele 3 celule (E5:E5), QUOTIENT returnează 1, iar operația +1 furnizează numărul de rând 2. Și așa mai departe.
Cu alte cuvinte, această parte a formulei creează o secvență de numere care se repetă, cum ar fi 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,... Fiecare număr se repetă de atâtea ori câte coloane există în intervalul dumneavoastră.
Pentru a calcula numărul coloanei , construiți o secvență de numere corespunzătoare utilizând funcția MOD:
MOD(RÂND(A1)-1, COLOANE($A$2:$C$5))+1
Deoarece există 3 coloane în intervalul nostru (A2:C5), secvența trebuie să fie 1,2,3,1,2,3,...
Funcția MOD returnează restul după împărțire.
În E2, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
devine
MOD(1-1, 3)+1)
și returnează 1.
În E3, MOD(ROW(A2)-1, COLUMNS($A$2:$C$5))+1)
devine
MOD(2-1, 3)+1)
și returnează 2.
Odată stabilite numerele de rând și de coloană, INDEX nu are probleme în a obține valoarea necesară.
În E2, INDEX($A$2:$C$5, 1, 1) returnează valoarea de pe primul rând și prima coloană din intervalul la care se face referire, adică din celula A2.
În E3, INDEX($A$2:$C$5, 1, 2) returnează valoarea de pe primul rând și a doua coloană, adică din celula B2.
Și așa mai departe.
A doua formulă, care scanează intervalul pe coloane, funcționează în mod similar. Diferența este că utilizează MOD pentru a obține numărul rândului și QUOTIENT pentru a obține numărul coloanei.
Funcția TOCOL nu funcționează
Dacă funcția TOCOL dă o eroare, cel mai probabil este vorba de unul dintre aceste motive:
TOCOL nu este acceptat în Excel
Atunci când primiți o eroare #NAME?, primul lucru care trebuie verificat este ortografia corectă a numelui funcției. Dacă numele este corect, dar eroarea persistă, înseamnă că funcția nu este disponibilă în versiunea dvs. de Excel. În acest caz, luați în considerare utilizarea unei alternative TOCOL.
Array este prea mare
O eroare #NUM indică faptul că matricea nu poate încăpea într-o coloană. Un caz tipic este atunci când vă referiți la coloane sau rânduri întregi.
Nu există suficiente celule goale
Atunci când apare eroarea #SPILL, verificați dacă coloana în care este introdusă formula are suficiente celule goale pentru a fi umplute cu rezultatele. Dacă celulele sunt goale din punct de vedere vizual, asigurați-vă că nu există spații și alte caractere care nu se scriu în ele. Pentru mai multe informații, consultați Cum să remediați eroarea #SPILL în Excel.
Iată cum puteți utiliza funcția TOCOL în Excel 365 și soluțiile alternative din versiunile anterioare pentru a transforma o matrice bidimensională într-o singură coloană. Vă mulțumesc pentru lectură și sper să ne revedem pe blog săptămâna viitoare!
Caiet de practică
Funcția TOCOL din Excel - exemple de formule (.xlsx file)