INHOUDSOPGAWE
Die vinnigste manier om 'n kolom of ry waardes in 'n tweedimensionele skikking te transformeer, is om die WRAPCOLS- of WRAPROWS-funksie te gebruik.
Sedert die vroegste dae van Excel is dit baie goed met die berekening en ontleding van getalle. Maar die manipulering van skikkings was tradisioneel 'n uitdaging. Die bekendstelling van dinamiese skikkings het die gebruik van skikkingsformules baie makliker gemaak. En nou stel Microsoft 'n stel nuwe dinamiese skikkingsfunksies vry om skikkings te manipuleer en te hervorm. Hierdie tutoriaal sal jou leer hoe om twee sulke funksies, WRAPCOLS en WRAPROWS, te gebruik om 'n kolom of ry in 'n japtrap in 'n 2D-skikking te transformeer.
Excel WRAPCOLS-funksie
Die WRAPCOLS-funksie in Excel transformeer 'n ry of kolom waardes in 'n tweedimensionele skikking gebaseer op die gespesifiseerde aantal waardes per ry.
Die sintaksis het die volgende argumente:
WRAPCOLS(vector, wrap_count, [pad_with])Waar:
- vektor (vereis) - die bron een-dimensionele skikking of reeks.
- wrap_count (vereis) - die maksimum aantal waardes per kolom.
- pad_with (opsioneel) - die waarde om met die laaste kolom te vul as daar nie genoeg items is om dit te vul nie. As dit weggelaat word, sal die ontbrekende waardes opgevul word met #N/A (verstek).
Byvoorbeeld, om die reeks B5:B24 na 'n 2-dimensionele skikking met 5 waardes per kolom te verander, die formule is:
=WRAPROWS(B5:B24, 5)
Jy voer diedie vektor -argument is nie 'n eendimensionele skikking nie.
#NUM! fout
'n #NUM-fout kom voor as die wrap_count -waarde 0 of negatiewe getal is.
#MORS! fout
Meestal dui 'n #STORS-fout aan dat daar nie genoeg leë selle is om die resultate in te mors nie. Maak die naburige selle skoon, en dit sal weg wees. As die fout voortduur, kyk na wat #SPILL in Excel beteken en hoe om dit reg te stel.
Dis hoe om die WRAPCOLS- en WRAPROWS-funksies te gebruik om 'n eendimensionele reeks om te skakel na 'n tweedimensionele skikking in Excel. Ek bedank jou vir die lees en hoop om jou volgende week op ons blog te sien!
Oefen werkboek vir aflaai
WRAPCOLS en WRAPROWS funksies - voorbeelde (.xlsx lêer)
formule in enige enkele sel en dit mors outomaties in soveel selle as wat nodig is. In die WRAPCOLS-afvoer word die waardes vertikaal gerangskik, van bo na onder, gebaseer op die wrap_countwaarde. Nadat die telling bereik is, word 'n nuwe kolom begin.
Excel WRAPROWS-funksie
Die WRAPROWS-funksie in Excel skakel 'n ry of kolom waardes om in 'n tweedimensionele skikking gebaseer op die aantal waardes per ry wat jy spesifiseer.
Die sintaksis is soos volg:
WRAPROWS(vector, wrap_count, [pad_with])Waar:
- vektor (vereis) - die bron eendimensioneel skikking of reeks.
- wrap_count (vereis) - die maksimum aantal waardes per ry.
- pad_with (opsioneel) - die waarde om te vul met die laaste ry as daar nie genoeg items is om dit te vul nie. Die verstek is #Nvt.
Om byvoorbeeld die reeks B5:B24 te transformeer in 'n 2D-skikking met 5 waardes in elke ry, is die formule:
=WRAPROWS(B5:B24, 5)
Jy voer die formule in die boonste linker sel van die stortingsreeks in, en dit vul alle ander selle outomaties in. Die WRAPROWS-funksie rangskik die waardes horisontaal, van links na regs, gebaseer op die wrap_count -waarde. Nadat die telling bereik is, begin dit 'n nuwe ry.
WRAPCOLS en WRAPROWS beskikbaarheid
Beide funksies is slegs beskikbaar in Excel vir Microsoft 365 (Windows en Mac) en Excel vir die web.
In vroeërweergawes, kan jy tradisionele meer komplekse formules gebruik om kolom-tot-skikking en ry-tot-skikking transformasies uit te voer. Verder in hierdie tutoriaal sal ons die alternatiewe oplossings in detail bespreek.
Wenk. Om 'n omgekeerde bewerking te doen, dit wil sê om 'n 2D-skikking na 'n enkele kolom of ry te verander, gebruik die TOCOL- of TOROW-funksie onderskeidelik.
Hoe om kolom/ry na reeks in Excel om te skakel - voorbeelde
Noudat jy 'n begrip van die basiese gebruik het, kom ons kyk na 'n paar meer spesifieke gevalle van naderby.
Stel die maksimum aantal waardes per kolom of ry
Afhangende van die struktuur van jou oorspronklike data, kan jy dit geskik vind om in kolomme (WRAPCOLS) of rye (WRAPROWS) herrangskik te word. Watter funksie jy ook al gebruik, dit is die wrap_count -argument wat die maksimum aantal waardes in elke kolom/ry bepaal.
Byvoorbeeld, om die reeks B4:B23 in 'n 2D-skikking te transformeer, sodat elke kolom 'n maksimum van 10 waardes het, gebruik hierdie formule:
=WRAPCOLS(B4:B23, 10)
Om dieselfde reeks vir ry te herrangskik, sodat elke ry 'n maksimum van 4 waardes het, is die formule :
=WRAPROWS(B4:B23, 4)
Die prent hieronder wys hoe dit lyk:
Pad ontbrekende waardes in die resulterende skikking
As daar nie voldoende waardes is om te vul nie al die kolomme/rye van die resulterende reeks, WRAPROWS en WRAPCOLS sal #N/A-foute terugstuur om die struktuur van die 2D-skikking te behou.
Om die verstek te verandergedrag, kan jy 'n pasgemaakte waarde vir die opsionele pad_met argument verskaf.
Byvoorbeeld, om die reeks B4:B21 te transformeer in 'n 2D-skikking met maksimum 5 waardes wyd, en vul die laaste ry met strepies as daar nie genoeg data is om dit in te vul nie, gebruik hierdie formule:
=WRAPROWS(B4:B21, 5, "-")
Om die ontbrekende waardes met nullengte-stringe (spasies) te vervang, is die formule:
=WRAPROWS(B4:B21, 5, "")
Vergelyk asseblief die resultate met die verstekgedrag (formule in D5) waar pad_met weggelaat is:
Voeg veelvuldige rye saam in 2D-reeks
Om 'n paar afsonderlike rye in 'n enkele 2D-skikking te kombineer, stapel jy eers die rye horisontaal deur die HSTACK-funksie te gebruik, en draai dan die waardes met WRAPROWS of WRAPCOLS toe.
Om byvoorbeeld die waardes van saam te voeg 3 rye (B5:J5, B7:G7 en B9:F9) en omvou in kolomme, wat elk 10 waardes bevat, is die formule:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Om waardes van veelvuldige rye te kombineer in 'n 2D-reeks waar elke ry 5 waardes bevat, neem die formule hierdie vorm aan:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
C combineer veelvuldige kolomme in 2D-skikking
Om verskeie kolomme in 'n 2D-reeks saam te voeg, stapel jy hulle eers vertikaal deur die VSTACK-funksie te gebruik, en draai dan die waardes in rye (WRAPROWS) of kolomme (WRAPCOLS).
Om byvoorbeeld die waardes van 3 kolomme (B5:J5, B7:G7 en B9:F9) in 'n 2D-reeks te kombineer waar elke kolom 10 waardes bevat, is die formule:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Om diedieselfde kolomme in 'n 2D-reeks waar elke ry 5 waardes bevat, gebruik hierdie formule:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Wrap en sorteer die skikking
In situasie wanneer die bronreeks waardes in het ewekansige volgorde terwyl jy wil hê dat die uitset gesorteer moet word, gaan op hierdie manier voort:
- Sorteer die aanvanklike skikking soos jy wil deur die SORT-funksie te gebruik.
- Voorsien die gesorteerde skikking aan WRAPCOLS of WRAPROWS.
Byvoorbeeld, om die reeks B4:B23 in rye, 4 waardes in elk te vou, en die resulterende reeks van A tot Z te sorteer, konstrueer 'n formule soos hierdie:
=WRAPROWS(SORT(B4:B23), 4)
Om dieselfde reeks in kolomme te vou, 10 waardes in elk, en die uitvoer alfabeties te sorteer, is die formule:
=WRAPCOLS(SORT(B4:B23), 10)
Die resultate lyk soos volg :
Wenk. Om die waardes in die resulterende skikking in dalende volgorde te rangskik, stel die derde argument ( sorteer_orde ) van die SORT funksie na -1.
WRAPCOLS alternatief vir Excel 365 - 2010
In ouer Excel-weergawes waar die WRAPCOLS-funksie nie ondersteun word nie, kan jy jou eie formule bou om die waardes van 'n eendimensionele skikking in kolomme toe te draai. Dit kan gedoen word deur 5 verskillende funksies saam te gebruik.
WRAPCOLS alternatief om 'n ry in 2D-reeks om te skakel:
IFERROR(IF(RY(A1)> n , "" , INDEX( ryreeks , , RY(A1) + (KOLOM(A1)-1)* n )), "")WRAPCOLS alternatief om 'n kolom in 2D om te skakel reeks:
IFERROR(IF(RY(A1)> n ,"", INDEX( kolomreeks , RY(A1) + (KOLOM(A1)-1)* n )), "")Waar n is die maksimum aantal waardes per kolom.
In die prent hieronder gebruik ons die volgende formule om 'n eenryreeks (D4:J4) in 'n driery-skikking te verander.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
En hierdie formule verander 'n een-kolom reeks (B4:B20) in 'n vyf-ry skikking:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Die bogenoemde oplossings boots die analoog WRAPCOLS formules na en lewer dieselfde resultate:
=WRAPCOLS(D4:J4, 3, "")
en
=WRAPCOLS(B4:B20, 5, "")
Hou asseblief in gedagte dat anders as die dinamiese skikking WRAPCOLS-funksie, die tradisionele formules die een-formule-een-sel benadering. Dus, ons eerste formule word in D8 ingevoer en 3 rye af en 3 kolomme na regs gekopieer. Die tweede formule word in D14 ingevoer en 5 rye af en 4 kolomme na regs gekopieer.
Hoe hierdie formules werk
In die hart van beide formules gebruik ons die INDEX-funksie wat 'n waarde van die verskafde skikking op grond van 'n ry- en kolomnommer terugstuur:
INDEX(skikking, ry_getal, [kolom_getal])Soos ons te doen het met een-ry skikking, kan ons die ry_getal argument weglaat, dus is dit verstek op 1. Die truuk is om te hê kol_getal word outomaties bereken vir elke sel waar die formule gekopieer word. En hier is hoe ons dit doen:
ROW(A1)+(COLUMN(A1)-1)*3)
Die ROW-funksie gee die rynommer van die A1-verwysing terug, wat 1 is.
Die COLUMN-funksie gee die kolomnommer vandie A1-verwysing, wat ook 1 is. Deur 1 af te trek, verander dit in nul. En vermenigvuldiging van 0 met 3 gee 0.
Dan tel jy 1 saam wat deur RY teruggestuur word en 0 teruggestuur deur KOLOM en kry 1 as gevolg.
Op hierdie manier, die INDEKS-formule in die boonste -linkersel van die bestemmingsreeks (D8) ondergaan hierdie transformasie:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
verander na
INDEX($D$4:$J$4, ,1)
en gee die waarde van die 1ste kolom terug van die gespesifiseerde skikking, wat "Apples" in D4 is.
Wanneer die formule na sel D9 gekopieer word, verander die relatiewe selverwysings gebaseer op 'n relatiewe posisie van rye en kolomme terwyl die absolute reeksverwysing onveranderd bly:
INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))
verander in:
INDEX($D$4:$J$4,, 2+(1-1)*3))
word:
INDEX($D$4:$J$4,, 2))
en gee die waarde terug vanaf die 2de kolom van die gespesifiseerde skikking, wat "Aprikose" in E4 is.
Die IF-funksie kontroleer die rynommer en as dit groter is as die aantal rye wat jy gespesifiseer het (3 in ons geval) gee dit 'n leë string ( ""), anders die resultaat van die INDEX-funksie:
IF(ROW(A1)>3, "", INDEX(…))
Ten slotte, die IFERROR-funksie stel 'n #REF! fout wat voorkom wanneer die formule na meer selle gekopieer word as wat werklik nodig is.
Die tweede formule wat 'n kolom in 2D-reeks omskakel, werk met dieselfde logika. Die verskil is dat jy die ROW + KOLOM-kombinasie gebruik om die ry_getal -argument vir INDEX uit te vind. Die col_num parameter is nie in hierdie geval nodig nie aangesien daar net iseen kolom in die bronskikking.
WRAPROWS-alternatief vir Excel 365 - 2010
Om die waardes van 'n eendimensionele skikking in rye in Excel 2019 en vroeër om te draai, kan jy gebruik die volgende alternatiewe vir die WRAPROWS-funksie.
Transformeer 'n ry in 2D-reeks:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( ryreeks , , KOLOM(A1)+(RY(A1)-1)* n )), "")Verander 'n kolom na 2D-reeks:
IFERROR(IF( KOLOM(A1)> n , "", INDEX( kolomreeks , KOLOM(A1)+(RY(A1)-1)* n )) , "")Waar n die maksimum aantal waardes per ry is.
In ons voorbeelddatastel gebruik ons die volgende formule om 'n eenryreeks om te skakel (D4) :J4) in 'n drie-kolom reeks. Die formule beland in sel D8 en word dan oor 3 kolomme en 3 rye gekopieer.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
Om 'n 1-kolomreeks (B4:B20) in 'n 5-kolomreeks te hervorm, voer die onderstaande formule in D14 in en sleep dit oor 5 kolomme en 4 rye.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
In Excel 365 kan dieselfde resultate behaal word met die ekwivalente WRAPCOLS-formules:
=WRAPROWS(D4:J4, 3, "")
en
=WRAPROWS(B4:B20, 5, "")
Hoe hierdie formules werk
In wese werk hierdie formules soos in die vorige voorbeeld. Die verskil is in hoe jy die ry_getal en kol_getal koördinate vir die INDEX-funksie bepaal:
INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))
Om die kolomnommer vir die boonste te kry linkersel in die bestemmingsreeks (D8), gebruik jy dituitdrukking:
COLUMN(A1)+(ROW(A1)-1)*3)
wat verander na:
1+(1-1)*3
en gee 1.
As gevolg hiervan gee die onderstaande formule die waarde van die eerste kolom van die gespesifiseerde skikking terug, wat "Apples" is:
INDEX($D$4:$J$4,, 1)
Tot dusver is die resultaat dieselfde as in die vorige voorbeeld. Maar kom ons kyk wat gebeur in ander selle...
In sel D9 verander die relatiewe selverwysings soos volg:
INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))
Dus, die formule verander in:
INDEX($D$4:$J$4,, 1+(2-1)*3))
word:
INDEX($D$4:$J$4,, 4))
en gee die waarde terug vanaf die 4de kolom van die gespesifiseerde skikking, wat "Kersies" in G4 is.
Die IF-funksie kontroleer die kolomnommer en as dit groter is as die aantal kolomme wat jy gespesifiseer het, gee dit 'n leë string ("") terug, anders die resultaat van die INDEX-funksie:
IF(COLUMN(A1)>3, "", INDEX(…))
As 'n afronding voorkom IFERROR #REF! foute wat in "ekstra" selle verskyn as jy die formule na meer selle kopieer as wat werklik nodig is.
WRAPCOLS- of WRAPROWS-funksie werk nie
As die "wrap"-funksies nie beskikbaar is nie in jou Excel of 'n fout tot gevolg het, is dit heel waarskynlik een van die redes hieronder.
#NAAM? fout
In Excel 365, 'n #NAAM? fout kan voorkom omdat jy die funksie se naam verkeerd gespel het. In ander weergawes dui dit aan dat die funksies nie ondersteun word nie. As 'n oplossing kan jy WRAPCOLS alternatief of WRAPROWS alternatief gebruik.
#VALUE! fout
'n #VALUE-fout kom voor as