INHOUDSOPGAWE
'n Maklike manier om 'n skikking of reeks in 'n kolom te omskep met die TOCOL-funksie.
Die vermoë om data van kolomme na rye en omgekeerd te transponeer, is al lank in Excel n rukkie. Maar die omskakeling van 'n reeks selle in 'n enkele kolom was 'n moeilike taak om te kraak. Nou, dit is uiteindelik besig om te verander. Microsoft het 'n nuwe funksie bekendgestel, genaamd TOCOL, wat 'n skikking-tot-kolom-transformasie in 'n oogwink kan doen. Hieronder is 'n lys take wat hierdie nuwe funksie maklik kan oplos.
Excel TOCOL-funksie
Die TOCOL-funksie in Excel omskep 'n skikking of reeks selle in 'n enkele kolom.
Die funksie neem drie argumente, maar slegs die eerste een word vereis.
TOCOL(skikking, [ignoreer], [skandeer_vir_kolom])Waar:
Skikking (vereis) - 'n skikking of reeks om in 'n kolom te transformeer.
Ignoreer (opsioneel) - definieer of spasies of/en foute moet ignoreer. Kan een van hierdie waardes wees:
- 0 of weggelaat (verstek) - hou alle waardes
- 1 - ignoreer spasies
- 2 - ignoreer foute
- 3 - ignoreer spasies en foute
Skandering_vir_kolom (opsioneel) - bepaal of die skikking horisontaal of vertikaal skandeer:
- ONWAAR of weggelaat (verstek) - skandeer die skikking vir ry van links na regs.
- WAAR - skandeer die skikking volgens kolom van bo na onder.
Wenke:
- Om 'n skikking in 'n enkele ry te omskep, gebruik die TOROWfunksie.
- Om die teenoorgestelde kolom-tot-skikking-transformasie te doen, gebruik óf die WRAPCOLS-funksie om vir kolom te draai óf die WRAPROWS-funksie om vir ry te draai.
- Om 'n skikking van horisontaal na te transponeer vertikaal of omgekeerd, d.w.s. verander rye na kolomme, gebruik die TRANSPOSE-funksie.
TOCOL beskikbaarheid
TOCOL is 'n nuwe funksie wat in Excel vir Microsoft 365 (vir Windows) ondersteun word en Mac) en Excel vir die web.
Basiese TOCOL-formule om reeks in kolom te omskep
Die TOCOL-formule in sy eenvoudigste vorm vereis net een argument - skikking . Byvoorbeeld, om 'n tweedimensionele skikking wat uit 3 kolomme en 4 rye bestaan in 'n enkele kolom te plaas, is die formule:
=TOCOL(A2:C5)
Die formule word slegs in een sel ingevoer (E2 in hierdie voorbeeld) en mors outomaties in die onderstaande selle. In terme van Excel word die resultaat 'n morsreeks genoem.
Hoe hierdie formule werk:
Tegnies word die reeks A2:C5 eers in 'n tweedimensionele skikking omgeskakel. Let asseblief op die semikolon-geskeide rye en komma-geskeide kolomme:
{"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}
Die TOCOL-funksie skandeer die skikking van links na regs en transformeer dit in 'n eendimensionele vertikale skikking:
{"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}
Die resultaat word in sel E2 geplaas, vanwaar dit na die onderstaande selle mors.
Hoe om TOCOL-funksie in Excel te gebruik - formulevoorbeelde
Om meer begrip van diemoontlikhede van die TOCOL-funksie en watter take dit kan dek, kom ons kyk na 'n paar formule-voorbeelde.
Transformeer skikking na kolom en ignoreer spasies en foute
Soos jy dalk in die vorige voorbeeld opgemerk het , hou die verstek TOCOL-formule al die waardes van die bronskikking, insluitend leë selle en foute.
In die resulterende skikking word leë selle deur nulle voorgestel, wat nogal verwarrend kan wees, veral as die oorspronklike skikking 0 waardes. Die oplossing is om spasies oor te slaan . Hiervoor stel jy die 2de argument op 1:
=TOCOL(A2:C5, 1)
Om foute te ignoreer , stel die 2de argument op 2:
=TOCOL(A2:C5, 2)
Om beide, spasies en foute uit te sluit, gebruik 3 vir die ignoreer argument:
=TOCOL(A2:C5, 3)
Skandeer skikking horisontaal of vertikaal
Met die verstek skandeer_vir_kolom -argument (ONWAAR of weggelaat), skandeer die TOCOL-funksie die skikking horisontaal vir ry. Om waardes volgens kolom te verwerk, stel hierdie argument op WAAR of 1. Byvoorbeeld:
=TOCOL(A2:C5, ,TRUE)
Let daarop dat, in beide gevalle, die teruggekeerde skikkings dieselfde grootte is, maar die waardes is gerangskik in 'n ander volgorde.
Kombineer veelvuldige reekse in een kolom
As jy met verskeie nie-aangrensende reekse te doen het, dan kan jy eers die reekse vertikaal in 'n enkele skikking kombineer met behulp van die VSTACK-funksie, en gebruik dan TOCOL om die gekombineerde skikking in 'n kolom te transformeer.
Gestel die eerste reeks is A2:C4 en die tweede reeks is A8:C9, neem die formule hierdie vorm aan:
=TOCOL(VSTACK(A2:C4, A8:C9))
Hierdie formule demonstreer die verstekgedrag - lees die gekombineerde skikkings horisontaal van links na regs soos getoon in kolom E in die prent hieronder.
Om waardes vertikaal van bo na onder te lees, stel jy die 3de argument van TOCOL op WAAR:
=TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)
Let asseblief daarop dat, in hierdie geval, die formule eers waardes van kolom A van beide skikkings gee, dan vanaf kolom B, ensovoorts. Die rede is dat TOCOL 'n enkele gestapelde skikking skandeer, nie die oorspronklike individuele reekse nie.
As jou besigheidslogika vereis dat die oorspronklike reekse horisontaal eerder as vertikaal gestapel moet word, gebruik dan die HSTACK-funksie in plaas van VSTACK.
Om elke daaropvolgende skikking aan die regterkant van die vorige skikking aan te voeg en lees die gekombineerde skikkings horisontaal, die formule is:
=TOCOL(HSTACK(A2:C4, A8:C10))
Om elke daaropvolgende skikking regs van die vorige skikking by te voeg en die gekombineerde skikkings vertikaal te skandeer, is die formule:
=TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)
Onttrek unieke waardes uit 'n multi-kolom reeks
Die Excel UNIQUE-funksie kan maklik uniekes in 'n enkele kolom of ry vind, asook unieke rye terugstuur, maar dit kan nie unieke waardes onttrek uit 'n multi-kolom skikking. Die oplossing is om dit saam met die TOCOL-funksie te gebruik.
Om byvoorbeeld al die verskillende (afsonderlike) waardes uit die reeks te onttrekA2:C7, die formule is:
=UNIQUE(TOCOL(A2:C7))
Daarbenewens kan jy die bogenoemde formule in die SORT-funksie toevou om die teruggestuurde skikking in alfabetiese volgorde te rangskik:
=SORT(UNIQUE(TOCOL(A2:C7)))
Hoe om reeks na kolom in Excel 365 - 2010 om te skakel
In Excel-weergawes waar die TOCOL-funksie nie ondersteun word nie, bestaan daar 'n paar alternatiewe maniere om 'n reeks selle in 'n kolom te transformeer. Hierdie oplossings is nogal moeilik, maar werk in elk geval.
Om die reeks vir ry te lees:
INDEX( reeks , KWOTIENT(RY(A1)-1, KOLOMME( reeks ))+1, MOD(RY(A1)-1, KOLOMME( reeks ))+1)Om die reeks volgens kolom te lees:
INDEX( reeks , MOD(RY(A1)-1, RYE( reeks ))+1, KWOTIENT(RY(A1)-1, RYE( reeks ))+1 )Vir ons voorbeelddatastel is die formules soos volg:
Om die reeks horisontaal van links na regs te skandeer :
=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)
Hierdie formule is gelykstaande aan die TOCOL-funksie met die 3de argument op ONWAAR gestel of weggelaat:
=TOCOL(A2:C5)
Om die reeks vertikaal van bo na onder te skandeer :
=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)
Hierdie formule is vergelykbaar met die TOCOL-funksie met die 3de argument gestel op TRUE:
=TOCOL(A2:C5, ,TRUE)
Anders as TOCOL, moet die alternatiewe formules in elke sel waar jy wil hê die resultate moet verskyn. In ons geval gaan die formules na selle E2 (volgens ry) en G2 (volgens kolom), en word dan na ry 13 gekopieer.
As die formules na meer rye gekopieer word as wat nodig is, sal 'n#VERW! fout sal in "ekstra" selle verskyn. Om te voorkom dat dit gebeur, kan jy die formules in die IFERROR-funksie soos volg nes:
=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), "")
Let op dat vir die formules om korrek te kopieer, sluit ons die reeks deur gebruik te maak van absolute selverwysings ($ A$2:$C$5). In plaas daarvan kan jy 'n benoemde reeks gebruik.
Hoe hierdie formules werk
Hieronder is 'n gedetailleerde uiteensetting van die eerste formule wat selle volgens ry rangskik:
=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)
Die idee is om die INDEX-funksie te gebruik om die waarde van 'n sekere sel terug te gee gebaseer op sy relatiewe ry- en kolomnommers in die reeks.
Die rynommer word deur hierdie kombinasie bereken :
QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
KWOTIENT gee die heelgetalgedeelte van 'n deling terug.
Vir teller gebruik jy ROW(A1)-1, wat 'n reeksnommer van 0 in E2 (eerste sel waar die formule ingevoer is) tot 11 in E13 (die laaste sel waar die formule ingevoer is).
Die noemer word deur KOLOMME($A $2:$C$5)) is konstant en gelyk aan die aantal kolomme in jou reeks (3 in ons geval).
As jy nou die KWOTIËNT se resultaat vir die eerste 3 selle nagaan (E2:E4) , sal jy sien dat dit gelyk is aan 0 (omdat die heelgetaldeel van die deling nul is). Die byvoeging van 1 gee die ry nommer 1.
Vir die volgende 3 selle (E5:E5), gee KWOTIENT 1 terug, en die +1-bewerking lewer die ry nommer 2. Ensovoorts.
Met ander woorde, hierdie deel van die formule skep 'n herhalinggetalreeks soos 1,1,1,2,2,2,3,3,3,4,4,4,... Elke getal herhaal soveel keer as wat daar kolomme in jou reeks is.
Om bereken die kolomnommer , bou jy 'n gepaste getalreeks deur die MOD-funksie te gebruik:
MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
Aangesien daar 3 kolomme in ons reeks is (A2:C5), is die volgorde moet 1,2,3,1,2,3,...
Die MOD-funksie gee die res na deling terug.
In E2, MOD(RY(A1)-1, KOLOMME ($A$2:$C$5))+1)
word
MOD(1-1, 3)+1)
en gee 1.
In E3 word MOD(RY(A2)-1, COLUMNS($A$2:$C$5))+1)
MOD(2-1, 3) +1)
en gee 2 terug.
Met die ry- en kolomnommers vasgestel, het INDEX geen probleme om die vereiste waarde te haal nie.
In E2, INDEX($A$2 :$C$5, 1, 1) gee die waarde van die 1ste ry en die 1ste kolom van die verwysde reeks terug, dit wil sê vanaf sel A2.
In E3, INDEX($A$2:$C$5, 1 , 2) gee die waarde van die 1ste ry en die 2de kolom terug, d.w.s. van sel B2.
Ensovoorts.
Die tweede formule wat die reeks met c skandeer olumn, werk op 'n soortgelyke manier. Die verskil is dat dit MOD gebruik om die rynommer te kry en KWOTIENT om die kolomnommer te kry.
TOCOL-funksie werk nie
As die TOCOL-funksie 'n fout gooi, is dit heel waarskynlik om een van hierdie redes te wees:
TOCOL word nie in jou Excel ondersteun nie
Wanneer jy 'n #NAAM kry? fout, die korrekte spelling van die funksie se naam is die eerste ding omtjek. As die naam korrek is maar die fout voortduur, is die funksie nie in jou weergawe van Excel beskikbaar nie. Oorweeg in hierdie geval om 'n TOCOL-alternatief te gebruik.
Skikking is te groot
'n #NUM-fout dui aan dat die skikking nie in 'n kolom kan pas nie. 'n Tipiese geval is wanneer jy na hele kolomme of rye verwys.
Daar is nie genoeg leë selle nie
Wanneer 'n #MORS-fout voorkom, maak seker dat die kolom waar die formule ingevoer is het genoeg leë selle om met die resultate gevul te word. As die selle visueel leeg is, maak seker dat daar geen spasies en ander nie-druk karakters daarin is nie. Vir meer inligting, sien Hoe om die #SPILL-fout in Excel reg te stel.
Dit is hoe jy die TOCOL-funksie in Excel 365 en alternatiewe oplossings in vroeëre weergawes kan gebruik om 'n 2-dimensionele skikking in 'n enkele kolom te transformeer. Ek bedank jou vir die lees en hoop om jou volgende week op ons blog te sien!
Oefenwerkboek
Excel TOCOL-funksie - formulevoorbeelde (.xlsx-lêer)