Ynhâldsopjefte
In flugge manier om in berik fan sellen yn ien rige te feroarjen mei help fan de TOROW funksje.
Microsoft Excel 365 hat ferskate nije funksjes yntrodusearre om ferskate manipulaasjes út te fieren mei arrays. Mei TOROW kinne jo transformaasjes fan berik nei rige yn gjin tiid útfiere. Hjir is in list mei taken dy't dizze nije funksje kin útfiere:
Excel TOROW-funksje
De TOROW-funksje yn Excel wurdt brûkt om in array of berik fan sellen te konvertearjen yn ien rige.
De funksje nimt yn totaal trije arguminten, wêrfan allinnich de earste fereaske is.
TOROW(array, [ignore], [scan_by_column])Wêr:
Array (fereaske) - in array of berik om te transformearjen yn ien rige.
Negearje (opsjoneel) - bepaalt of blanks of/en negearre wurde moatte flaters. Kin ien fan dizze wearden nimme:
- 0 of weilitten (standert) - hâld alle wearden
- 1 - negearje blanks
- 2 - negearje flaters
- 3 - negearje blanks en flaters
Scan_by_column (opsjoneel) - definiearret hoe't jo de array scannen:
- FALSE of weilitten (standert) - scan de array horizontaal foar rige.
- TRUE - scan de array fertikaal troch kolom.
Tips:
- Om in array te transformearjen yn ien kolom, brûk de TOCOL-funksje.
- Om de omkearde rige-nei-array-transformaasje út te fieren, brûk of de WRAPCOLS-funksje om yn kolommen te wrapjen of de WRAPROWS-funksje om te wrapjenarray yn rigen.
- Om rigen yn kolommen te feroarjen, brûk de TRANSPOSE-funksje.
TOROW-beskikberens
TOROW is in nije funksje, dy't allinnich stipe wurdt yn Excel foar Microsoft 365 (foar Windows en Mac) en Excel foar it web.
Basis TOROW-formule yn Excel
Om in ienfâldige berik-to-rige-transformaasje te dwaan, brûk de TOROW-formule yn syn basisfoarm. Hjirfoar moatte jo allinich it earste argumint definiearje ( array ).
Om bygelyks in twadiminsjonale array dy't bestiet út 3 kolommen en 3 rigen yn ien rige te feroarjen, formule is:
=TOROW(A3:C6)
Jo ynfiere de formule yn mar ien sel (A10 yn ús gefal), en it spilet automatysk yn safolle sellen as nedich om alle resultaten te hâlden. Yn Excel-termen wurdt it útfierberik omjûn troch in tinne blauwe râne in spillberik neamd.
Hoe't dizze formule wurket:
Earst wurdt in levere berik fan sellen omfoarme ta in twadiminsjonale array. Sjoch asjebleaft de troch komma's skieden kolommen en mei puntkomma skieden rigen:
{"Apple","Banana","Cherry";1,2,3;4,5,6;7,8,9}
Dan lêst de TOROW-funksje de array fan lofts nei rjochts en konvertearret it yn in iendimensjonale horizontale array:
{"Apple","Banana","Cherry",1,2,3,4,5,6,7,8,9}
It resultaat giet nei sel A10, wêrfan it spielet yn 'e oanbuorjende sel oan' e rjochterkant.
Omsette berik nei rige mei it negearjen fan blanks en flaters
Standert hâldt de TOROW-funksje alle wearden fan 'e boarne array, ynklusyf lege sellen enflaters. Yn de útfier ferskine nul wearden op it plak fan lege sellen, wat frijwat betiizjend kin wêze.
Om blanken út te sluten , set it argumint negearje op 1:
=TOROW(A3:C5, 1)
Om flaters te negearjen , set it argumint negearje op 2:
=TOROW(A3:C5, 2)
Om oer te slaan beide, blanks en flaters , brûke 3 foar it ignore argumint:
=TOROW(A3:C5, 3)
De ôfbylding hjirûnder lit alle trije senario's yn aksje sjen:
Lês array horizontaal of fertikaal
Mei it standertgedrach ferwurket de TOROW-funksje de array horizontaal fan lofts nei rjochts. Om de wearden per kolom fan boppen nei ûnderen te scannen, set jo it 3e argumint ( scan_by_column ) yn op TRUE of 1.
Om bygelyks it boarneberik foar rige te lêzen, de formule yn E3 is:
=TOROW(A3:C5)
Om it berik per kolom te scannen, is de formule yn E8:
=TOROW(A3:C5, ,TRUE)
Yn beide gefallen binne de resultearjende arrays deselde grutte, mar de wearden wurde regele yn in oare folchoarder.
Meardere berik yn ien rige gearfoegje
Om ferskate net-oangrinzjende berik yn ien rige te kombinearjen, steapje jo se earst horizontaal of fertikaal yn ien array mei help fan respektivelik HSTACK of VSTACK , en brûk dan de TOROW-funksje om de kombinearre array yn in rige te konvertearjen.
Ofhinklik fan jo bedriuwslogika sil ien fan 'e folgjende formules de taak útfiere.
Stack arrays horizontaal en konvertearje troch rige
Mei de earsteberik yn A3: C4 en it twadde berik yn A8: C9, de ûndersteande formule sil de twa berik horizontaal steapele yn ien array, en transformearje it dan nei in rige dy't de wearden fan links nei rjochts lêze. It resultaat is yn E3 yn de ôfbylding hjirûnder.
=TOROW(HSTACK(A3:C4, A8:C9))
Stapel arrays horizontaal en konvertearje troch kolom
Om de steapele array fertikaal fan boppe nei ûnder te lêzen, jo sette it 3e argumint fan TOROW op TRUE lykas werjûn yn E5 yn 'e ôfbylding hjirûnder:
=TOROW(HSTACK(A3:C4, A8:C9), ,TRUE)
Stack arrays fertikaal en konvertearje per rige
Om elk taheakje te kinnen folgjende array nei de ûnderkant fan 'e foarige array en lês de kombineare array horizontaal, de formule yn E12 is:
=TOROW(VSTACK(A3:C4, A8:C9))
Stack arrays fertikaal en konvertearje troch kolom
Om elke folgjende array oan 'e ûnderkant fan 'e foarige ta te foegjen en de kombineare array fertikaal te scannen, is de formule:
=TOROW(VSTACK(A3:C4, A8:C9), ,TRUE)
Om de logika better te begripen, observearje de ferskillende folchoarder fan wearden yn de resultearjende arrays:
Unike wearden út in berik yn in rige útpakke
Begjin mei Microsoft Excel 2016 hawwe wy in prachtige funksje, mei de namme UNIQUE, dy't maklik unike wearden kin krije út ien kolom of rige. It kin lykwols gjin arrays mei meardere kolommen behannelje. Om dizze beheining te oerwinnen, brûk de funksjes UNIQUE en TOROW tegearre.
Om bygelyks alle ferskillende (ûnderskate) wearden út it berik A2:C7 te heljen en de resultaten yn ien rige te pleatsen, deformule is:
=UNIQUE(TOROW(A2:C7), TRUE)
As TOROW in iendiminsjonale horizontale array werombringt, sette wy it 2e ( by_col ) argumint fan UNIQUE op TRUE om de kolommen te fergelykjen tsjin elk oars.
As jo wolle dat de resultaten yn alfabetyske folchoarder pleatst wurde, wikkel dan de boppesteande formule yn 'e SORT-funksje:
=SORT(UNIQUE(TOROW(A2:C7), TRUE), , ,TRUE )
Lykas by UNIQUE, de by_col argumint fan SORT is ek ynsteld op TRUE.
TOROW-alternatyf foar Excel 365 - 2010
Yn Excel-ferzjes wêr't de TOROW-funksje net beskikber is, kinne jo in berik yn ien rige transformearje mei in kombinaasje fan in pear ferskillende funksjes dy't wurkje yn âldere ferzjes. Dizze oplossingen binne komplekser, mar se wurkje wol.
Om it berik horizontaal te scannen, is de generike formule:
INDEX( berik , KWOTIENT(KOLOM (A1)-1, COLUMNS( berik ))+1, MOD(COLUMN(A1)-1, COLUMNS( berik ))+1)Om it berik fertikaal te scannen, is de generyske formule :
INDEX( berik , MOD(COLUMN(A1)-1, COLUMNS( berik ))+1, QUOTIENT(COLUMN (A1)-1, COLUMNS( berik ))+1)Foar ús foarbyldgegevensset yn A3:C5 hawwe de formules dizze foarm:
Om it berik per rige te scannen:
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
Dizze formule is in alternatyf foar de TOROW-funksje mei it 3e argumint ynsteld op FALSE of weilitten:
=TOROW(A3:C5)
Om it berik te scannen troch kolom:
=INDEX($A$3:$C$5, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
Dizze formule is lykweardich oan de TOROW-funksje mei it 3e argumint ynsteld opTRUE:
=TOROW(A3:C5, ,TRUE)
Tink derom dat yn tsjinstelling ta de dynamyske array TOROW-funksje, dizze tradisjonele formules moatte wurde ynfierd yn elke sel wêr't jo wolle dat de resultaten ferskine. Yn ús gefal giet de earste formule (per rige) nei E3 en wurdt kopieare fia M3. De twadde formule (troch kolom) komt yn E8 telâne en wurdt troch M8 sleept.
Om de formules goed te kopiearjen, slute wy it berik mei absolute ferwizings ($A$3:$C$5). In beneamd berik sil ek dwaan.
As jo de formules nei mear sellen kopiearre hawwe dan nedich, in #REF! flater sil ferskine yn "ekstra" sellen. Om dit te reparearjen, wrap jo formule yn 'e IFERROR-funksje sa:
=IFERROR(INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1), "")
Hoe't dizze formules wurkje
Hjirûnder is in detaillearre ferdieling fan 'e earste formule dy't de wearden op rige regelet:
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
Yn it hert fan 'e formule brûke wy de INDEX-funksje om de wearde fan in sel te krijen basearre op syn relative posysje yn 'e berik.
It rigenûmer wurdt berekkene troch dizze formule:
QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1
It idee is om in werhelle nûmersekwinsje te meitsjen lykas 1,1 ,1,2,2,2,3,3,3, ... wêr't elk nûmer safolle kearen werhellet as der kolommen binne yn it boarneberik. En hjir is hoe't wy dit dogge:
QUOTIENT jout it hiele getal fan in divyzje werom.
Foar teller brûke wy COLUMN(A1)-1, dy't in searje weromjout. nûmer fan 0 yn 'e earste sel wêr't de formule ynfierd wurdt nei n (totaal oantal wearden yn it berikminus 1) yn 'e lêste sel wêr't de formule yn ynfierd is. Yn dit foarbyld hawwe wy 0 yn E2 en 8 yn M3.
Foar noemer brûke wy COLUMNS($A$3:$C$5)). Dit jout in konstant getal gelyk oan it oantal kolommen yn jo berik (3 yn ús gefal).
Dêrtroch jout de funksje QUOTIENT 0 werom yn 'e earste 3 sellen (E3:G3), wêrfan wy add 1, sadat it rigenûmer 1 is.
Foar de folgjende 3 sellen (H3:J3), jout QUOTIENT 1 werom, en +1 jout it rigenûmer 2. Ensafuorthinne.
Om it kolomnûmer te berekkenjen, bouwe jo in passende nûmersekwinsje mei de MOD-funksje:
MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1
Om't der 3 kolommen yn ús berik binne, moat de folchoarder der útsjen : 1,2,3,1,2,3,…
De funksje MOD jout de rest nei divyzje werom.
Yn E3, MOD(COLUMN(A1)-1, COLUMNS($ A$3:$C$5))+
wurdt
MOD(1-1, 3)+1)
en jout 1.
In F3, MOD(COLUMN(B1)-1, COLUMNS($A$3:$C$5))+
wurdt
MOD(2-1, 3)+1)
en jout 2 werom.
As de rige- en kolomnûmers ienris fêststeld binne, hellet INDEX maklik de wearde op it krúspunt fan dy rige en kolom.
Yn E3, INDEX($A$3 :$C$5, 1, 1) jout in wearde werom út de 1e rige en de 1e kolom fan it ferwiisde berik, dus út sel A3.
Yn F3 jout INDEX($A$3:$C$5, 1, 2) in wearde werom út de 1e rige en de 2e kolom, dus út sel B3.
Ensafuorthinne.
De twadde formule dy't it berik per kolom scant, wurket yn inferlykbere wize. It ferskil is dat wy MOD brûke om it rigenûmer te berekkenjen en QUOTIENT om it kolomnûmer út te finen.
TOROW-funksje wurket net
As de TOROW-funksje in flater opleveret, is it wierskynlik ien fan dizze redenen:
#NAME? flater
Mei de measte Excel-funksjes, in #NAME? flater is in dúdlike oanwizing dat de namme fan de funksje is ferkeard stavere. Mei TOROW kin it ek betsjutte dat de funksje net beskikber is yn jo Excel. As jo Excel-ferzje yn oare as 365 is, besykje dan in TOROW-alternatyf te brûken.
#NUM-flater
In #NUM-flater jout oan dat de weromjûne array net yn in rige passe kin. Meast faak komt dat foar as jo ferwize nei hiele kolommen en/of rigen ynstee fan in lytser berik.
#SPILL flater
Yn de measte gefallen suggerearret in #SPILL flater dat de rige wêr jo hawwe ynfierd de formule hat net genôch lege sellen te spill de resultaten yn. As de oanbuorjende sellen visueel leech binne, soargje derfoar dat der gjin spaasjes of oare net-printende tekens yn binne. Sjoch foar mear ynformaasje Wat #SPILL-flater betsjut yn Excel.
Dat is hoe't jo de TOROW-funksje yn Excel brûke om in 2-diminsjonale array of berik yn ien rige te konvertearjen. Ik tankje jo foar it lêzen en hoopje jo nije wike op ús blog te sjen!
Oefeningswurkboek foar download
Excel TOROW-funksje - formulefoarbylden (.xlsx-bestân)