Talaan ng nilalaman
Ang pinakamabilis na paraan upang baguhin ang isang column o row ng mga value sa isang two-dimensional na array ay ang paggamit ng WRAPCOLS o WRAPROWS function.
Mula noong mga unang araw ng Excel, ito ay naging napakahusay sa pagkalkula at pagsusuri ng mga numero. Ngunit ang pagmamanipula ng mga array ay tradisyonal na naging isang hamon. Ang pagpapakilala ng mga dynamic na array ay nagpadali sa paggamit ng mga array formula. At ngayon, ang Microsoft ay naglalabas ng isang hanay ng mga bagong dynamic na function ng array upang manipulahin at muling hubugin ang mga array. Ituturo sa iyo ng tutorial na ito kung paano gumamit ng dalawang ganoong function, WRACOLS at WRAPROWS, upang gawing 2D array ang isang column o row sa loob ng ilang sandali.
Excel WRAPCOLS function
Binabago ng WRACOLS function sa Excel ang isang row o column ng mga value sa isang two-dimensional na array batay sa tinukoy na bilang ng mga value bawat row.
Ang syntax ay may mga sumusunod na argumento:
WRAPCOLS(vector, wrap_count, [pad_with])Kung saan:
- vector (kinakailangan) - ang pinagmulang one-dimensional na array o range.
- wrap_count (kinakailangan) - ang max na bilang ng mga value sa bawat column.
- pad_with (opsyonal) - ang halaga na ilalagay sa huling column kung walang sapat na mga item upang punan ito. Kung aalisin, ang mga nawawalang value ay lagyan ng #N/A (default).
Halimbawa, upang baguhin ang hanay na B5:B24 sa isang 2-dimensional na array na may 5 value bawat column, ang ang formula ay:
=WRAPROWS(B5:B24, 5)
Ipasok mo angang argument na vector ay hindi isang one-dimensional na array.
#NUM! error
Isang #NUM error ang nangyayari kung ang wrap_count value ay 0 o negatibong numero.
#SPILL! error
Kadalasan, ang isang #SPILL error ay nagpapahiwatig na walang sapat na mga blangkong cell upang ibuhos ang mga resulta. I-clear ang kalapit na mga cell, at ito ay mawawala. Kung magpapatuloy ang error, tingnan kung ano ang ibig sabihin ng #SPILL sa Excel at kung paano ito ayusin.
Ganyan gamitin ang mga function ng WRACOLS at WRAPROWS upang i-convert ang isang one-dimensional na range sa isang two-dimensional na array sa Excel. Salamat sa pagbabasa at umaasa akong makita ka sa aming blog sa susunod na linggo!
Magsanay ng workbook para sa pag-download
mga function ng WRACOLS at WRAPROWS - mga halimbawa (.xlsx file)
formula sa anumang solong cell at awtomatiko itong natapon sa pinakamaraming mga cell kung kinakailangan. Sa WRACOLS output, ang mga value ay nakaayos nang patayo, mula sa itaas hanggang sa ibaba, batay sa wrap_countvalue. Matapos maabot ang bilang, magsisimula ang isang bagong column.
Excel WRAPROWS function
Kino-convert ng WRAPROWS function sa Excel ang isang row o column ng mga value sa isang two-dimensional array batay sa bilang ng mga value sa bawat row na iyong tinukoy.
Ang syntax ay ang sumusunod:
WRAPROWS(vector, wrap_count, [pad_with])Kung saan:
- vector (kinakailangan) - ang source one-dimensional array o range.
- wrap_count (kinakailangan) - ang max na bilang ng mga value sa bawat row.
- pad_with (opsyonal) - ang value sa pad sa huling hilera kung walang sapat na mga item upang punan ito. Ang default ay #N/A.
Halimbawa, para gawing 2D array ang range B5:B24 na mayroong 5 value sa bawat row, ang formula ay:
=WRAPROWS(B5:B24, 5)
Ilalagay mo ang formula sa itaas na kaliwang cell ng hanay ng spill, at awtomatikong pupunuin nito ang lahat ng iba pang mga cell. Inaayos ng WRAPROWS function ang mga value nang pahalang, mula kaliwa hanggang kanan, batay sa wrap_count value. Pagkatapos maabot ang bilang, magsisimula ito ng bagong hilera.
Availability ng WRACOLS at WRAPROWS
Ang parehong mga function ay available lang sa Excel para sa Microsoft 365 (Windows at Mac) at Excel para sa web.
Sa mas maagamga bersyon, maaari kang gumamit ng tradisyonal na mas kumplikadong mga formula upang magsagawa ng mga pagbabagong column-to-array at row-to-array. Higit pa sa tutorial na ito, tatalakayin natin ang mga alternatibong solusyon nang detalyado.
Tip. Upang gumawa ng reverse operation, ibig sabihin, baguhin ang isang 2D array sa isang column o row, gamitin ang TOCOL o TOROW function, ayon sa pagkakabanggit.
Paano i-convert ang column / row sa range sa Excel - mga halimbawa
Ngayong naiintindihan mo na ang pangunahing paggamit, tingnan natin ang ilang mas partikular na mga kaso.
Itakda ang maximum na bilang ng mga value sa bawat column o row
Depende sa ang istraktura ng iyong orihinal na data, maaari mong makitang angkop itong muling ayusin sa mga column (WRAPCOLS) o mga row (WRAPROWS). Alinmang function ang gamitin mo, ang argument na wrap_count ang tumutukoy sa max na bilang ng mga value sa bawat column/row.
Halimbawa, upang gawing 2D array ang range na B4:B23, upang ang bawat column ay may maximum na 10 value, gamitin ang formula na ito:
=WRAPCOLS(B4:B23, 10)
Upang muling ayusin ang parehong hanay ayon sa row, upang ang bawat row ay may maximum na 4 na value, ang formula ay :
=WRAPROWS(B4:B23, 4)
Ipinapakita ng larawan sa ibaba kung ano ang hitsura nito:
Pad missing values in the resulting array
Kung sakaling walang sapat na value na pupunan lahat ng column/row ng resultang range, WRAPROWS at WRACOLS ay magbabalik ng #N/A error para panatilihin ang structure ng 2D array.
Para baguhin ang defaultpag-uugali, maaari kang magbigay ng custom na halaga para sa opsyonal na argumento na pad_with .
Halimbawa, upang gawing 2D array ang range na B4:B21 na may maximum na 5 value, at i-pad ang huling row na may mga gitling kung walang sapat na data upang punan ito, gamitin ang formula na ito:
=WRAPROWS(B4:B21, 5, "-")
Para palitan ang mga nawawalang value ng mga zero-length na string (mga blangko), ang formula ay:
=WRAPROWS(B4:B21, 5, "")
Mangyaring ihambing ang mga resulta sa default na gawi (formula sa D5) kung saan ang pad_with ay tinanggal:
Pagsamahin ang maramihang mga hilera sa 2D na hanay
Upang pagsamahin ang ilang magkakahiwalay na row sa isang solong 2D array, i-stack mo muna ang mga row nang pahalang gamit ang HSTACK function, at pagkatapos ay ibalot ang mga value gamit ang WRAPROWS o WRAPCOLS.
Halimbawa, para pagsamahin ang mga value mula sa 3 row (B5:J5, B7:G7 at B9:F9) at balutin sa mga column, bawat isa ay naglalaman ng 10 value, ang formula ay:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Upang pagsamahin ang mga value mula sa maraming row sa isang 2D range kung saan ang bawat row ay naglalaman ng 5 value, ang formula ay ganito ang form:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
C i-ombine ang maraming column sa 2D array
Para pagsamahin ang ilang column sa isang 2D range, i-stack mo muna ang mga ito nang patayo gamit ang VSTACK function, at pagkatapos ay ibalot ang mga value sa mga row (WRAPROWS) o column (WRAPCOLS).
Halimbawa, para pagsamahin ang mga value mula sa 3 column (B5:J5, B7:G7 at B9:F9) sa isang 2D range kung saan ang bawat column ay naglalaman ng 10 value, ang formula ay:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Upang pagsamahin angparehong column sa isang 2D range kung saan ang bawat row ay naglalaman ng 5 value, gamitin ang formula na ito:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
I-wrap at pag-uri-uriin ang array
Sa sitwasyon kapag ang source range ay may mga value sa random na pagkakasunud-sunod habang nais mong pagbukud-bukurin ang output, magpatuloy sa ganitong paraan:
- Pagbukud-bukurin ang paunang array sa paraang gusto mo gamit ang SORT function.
- Ibigay ang pinagsunod-sunod na array sa WRAPCOLS o WRAPROWS.
Halimbawa, upang i-wrap ang range B4:B23 sa mga row, 4 na value sa bawat isa, at pag-uri-uriin ang resultang range mula A hanggang Z, bumuo ng formula na tulad nito:
=WRAPROWS(SORT(B4:B23), 4)
Upang i-wrap ang parehong hanay sa mga column, 10 value sa bawat isa, at pag-uri-uriin ang output ayon sa alpabeto, ang formula ay:
=WRAPCOLS(SORT(B4:B23), 10)
Ang mga resulta ay ganito ang hitsura :
Tip. Upang ayusin ang mga value sa resultang array sa pababang pagkakasunud-sunod , itakda ang ikatlong argumento ( sort_order ) ng SORT function sa -1.
WRAPCOLS alternatibo para sa Excel 365 - 2010
Sa mga mas lumang bersyon ng Excel kung saan hindi sinusuportahan ang function na WRACOLS, maaari kang bumuo ng sarili mong formula upang ibalot ang mga value mula sa isang one-dimensional na array sa mga column. Magagawa ito sa pamamagitan ng paggamit ng 5 magkakaibang function nang magkasama.
alternatibong WRACOLS para i-convert ang isang row sa 2D range:
IFERROR(IF(ROW(A1)> n , "" , INDEX( row_range , , ROW(A1) + (COLUMN(A1)-1)* n )), "")WRAPCOLS alternatibong mag-convert ng column sa 2D saklaw:
IFERROR(IF(ROW(A1)> n ,"", INDEX( column_range , ROW(A1) + (COLUMN(A1)-1)* n )), "")Where n ay ang maximum na bilang ng mga value sa bawat column.
Sa larawan sa ibaba, ginagamit namin ang sumusunod na formula upang gawing tatlong-row na array ang isang hanay ng isang hilera (D4:J4).
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
At binago ng formula na ito ang isang hanay ng isang hanay (B4:B20) sa isang limang hilera na array:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Ang mga solusyon sa itaas ay ginagaya ang kahalintulad na mga formula ng WRACOLS at gumawa ng parehong mga resulta:
=WRAPCOLS(D4:J4, 3, "")
at
=WRAPCOLS(B4:B20, 5, "")
Pakitandaan na hindi tulad ng dynamic array na WRACOLS function, ang mga tradisyonal na formula ay sumusunod sa one-formula-one-cell na diskarte. Kaya, ang aming unang formula ay ipinasok sa D8 at kinopya ang 3 row pababa at 3 column sa kanan. Ang pangalawang formula ay ipinasok sa D14 at kinopya ang 5 row pababa at 4 na column sa kanan.
Paano gumagana ang mga formula na ito
Sa gitna ng parehong mga formula, ginagamit namin ang function na INDEX na nagbabalik ng value mula sa ibinigay na array batay sa numero ng row at column:
INDEX(array, row_num, [column_num])Habang tinatalakay natin ang one-row array, maaari nating alisin ang argumento na row_num , kaya nagde-default ito sa 1. Ang trick ay magkaroon ng Ang col_num ay awtomatikong kinakalkula para sa bawat cell kung saan kinokopya ang formula. At narito kung paano namin ito ginagawa:
ROW(A1)+(COLUMN(A1)-1)*3)
Ibinabalik ng ROW function ang row number ng A1 reference, na 1.
Ibinabalik ng COLUMN function ang column number ngang A1 reference, na 1 din. Ang pagbabawas ng 1 ay nagiging zero. At ang pag-multiply ng 0 sa 3 ay nagbibigay ng 0.
Pagkatapos, magdadagdag ka ng 1 na ibinalik ng ROW at 0 na ibinalik ng COLUMN at makakuha ng 1 bilang resulta.
Sa ganitong paraan, ang INDEX formula sa itaas -kaliwang cell ng hanay ng patutunguhan (D8) ay sumasailalim sa pagbabagong ito:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
ay nagbabago sa
INDEX($D$4:$J$4, ,1)
at ibinabalik ang halaga mula sa 1st column ng tinukoy na array, na "Mansanas" sa D4.
Kapag ang formula ay kinopya sa cell D9, nagbabago ang mga relatibong cell reference batay sa isang kaugnay na posisyon ng mga row at column habang ang absolute range reference ay nananatiling hindi nagbabago:
INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))
nagiging:
INDEX($D$4:$J$4,, 2+(1-1)*3))
nagiging:
INDEX($D$4:$J$4,, 2))
at ibinabalik ang value mula sa 2nd column ng tinukoy na array, na "Aprikots" sa E4.
Sinusuri ng IF function ang row number at kung mas malaki ito sa bilang ng mga row na iyong tinukoy (3 sa aming kaso) ay nagbabalik ng walang laman na string ( ""), kung hindi, ang resulta ng INDEX function:
IF(ROW(A1)>3, "", INDEX(…))
Sa wakas, ang IFERROR function ay nag-aayos ng #REF! error na nangyayari kapag ang formula ay kinopya sa mas maraming cell kaysa sa talagang kailangan.
Ang pangalawang formula na nagko-convert ng column sa 2D range ay gumagana sa parehong logic. Ang pagkakaiba ay ginagamit mo ang kumbinasyon ng ROW + COLUMN upang malaman ang row_num na argumento para sa INDEX. Ang parameter na col_num ay hindi kailangan sa kasong ito dahil mayroon lamangisang column sa source array.
WRAPROWS alternative para sa Excel 365 - 2010
Upang i-wrap ang mga value mula sa isang one-dimensional array sa mga row sa Excel 2019 at mas maaga, maaari mong gamitin ang mga sumusunod na alternatibo sa WRAPROWS function.
I-transform ang isang row sa 2D range:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , COLUMN(A1)+(ROW(A1)-1)* n )), "")Baguhin ang column sa 2D range:
IFERROR(IF( COLUMN(A1)> n , "", INDEX( column_range , COLUMN(A1)+(ROW(A1)-1)* n )) , "")Kung saan ang n ay ang maximum na bilang ng mga value sa bawat row.
Sa aming sample na set ng data, ginagamit namin ang sumusunod na formula upang mag-convert ng isang hanay ng isang hilera (D4 :J4) sa isang hanay ng tatlong hanay. Dumating ang formula sa cell D8, at pagkatapos ay kinopya sa 3 column at 3 row.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
Upang muling hubugin ang isang 1-column range (B4:B20) sa isang 5-column range, ilagay ang formula sa ibaba sa D14 at i-drag ito sa 5 column at 4 na row.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
Sa Excel 365, ang parehong mga resulta ay maaaring makamit gamit ang mga katumbas na WRACOLS formula:
=WRAPROWS(D4:J4, 3, "")
at
=WRAPROWS(B4:B20, 5, "")
Paano gumagana ang mga formula na ito
Sa pangkalahatan, gumagana ang mga formula na ito tulad ng sa nakaraang halimbawa. Ang pagkakaiba ay sa kung paano mo tinutukoy ang row_num at col_num na mga coordinate para sa INDEX function:
INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))
Upang makuha ang numero ng column para sa itaas kaliwang cell sa hanay ng patutunguhan (D8), ginagamit mo itoexpression:
COLUMN(A1)+(ROW(A1)-1)*3)
na nagbabago sa:
1+(1-1)*3
at nagbibigay ng 1.
Bilang resulta, ibinabalik ng formula sa ibaba ang halaga mula sa unang column ng tinukoy na array, na "Mansanas":
INDEX($D$4:$J$4,, 1)
Sa ngayon, ang resulta ay kapareho ng sa nakaraang halimbawa. Ngunit tingnan natin kung ano ang nangyayari sa ibang mga cell…
Sa cell D9, nagbabago ang mga kamag-anak na sanggunian ng cell tulad ng sumusunod:
INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))
Kaya, ang formula ay nagiging:
Ang INDEX($D$4:$J$4,, 1+(2-1)*3))
ay nagiging:
INDEX($D$4:$J$4,, 4))
at ibinabalik ang value mula sa ika-4 na column ng tinukoy na array, na "Cherries" sa G4.
Sinusuri ng function na IF ang numero ng column at kung mas malaki ito sa bilang ng mga column na iyong tinukoy, magbabalik ng walang laman na string (""), kung hindi, ang resulta ng function na INDEX:
IF(COLUMN(A1)>3, "", INDEX(…))
Bilang isang pagtatapos, pinipigilan ng IFERROR ang #REF! mga error mula sa paglitaw sa mga "dagdag" na mga cell kung kokopyahin mo ang formula sa higit pang mga cell kaysa sa aktwal na kinakailangan.
WRAPCOLS o WRAPROWS function ay hindi gumagana
Kung ang "wrap" function ay hindi magagamit sa iyong Excel o magresulta sa isang error, malamang na isa ito sa mga dahilan sa ibaba.
#NAME? error
Sa Excel 365, isang #NAME? maaaring mangyari ang error dahil mali ang spelling mo sa pangalan ng function. Sa ibang mga bersyon, ipinapahiwatig nito na ang mga function ay hindi suportado. Bilang solusyon, maaari mong gamitin ang alternatibong WRACOLS o alternatibong WRAPROWS.
#VALUE! error
May #VALUE error na nangyayari kung