Пераўтварыце слупок / радок у масіў у Excel: WRAPCOLS & Функцыі WRAPROWS

  • Падзяліцца Гэтым
Michael Brown

Самы хуткі спосаб пераўтварыць слупок або радок значэнняў у двухмерны масіў - гэта выкарыстоўваць функцыю WRAPCOLS або WRAPROWS.

З самых першых дзён Excel гэта было вельмі добра разлічвае і аналізуе лічбы. Але маніпуляванне масівамі традыцыйна было праблемай. Увядзенне дынамічных масіваў значна палегчыла выкарыстанне формул масіваў. І цяпер Microsoft выпускае набор новых функцый дынамічнага масіва для маніпулявання і змены формы масіваў. Гэты падручнік навучыць вас выкарыстоўваць дзве такія функцыі, WRAPCOLS і WRAPROWS, каб імгненна пераўтварыць слупок або радок у 2D-масіў.

Функцыя Excel WRAPCOLS

Функцыя WRAPCOLS у Excel пераўтварае радок або слупок значэнняў у двухмерны масіў на аснове зададзенай колькасці значэнняў у радку.

Сінтаксіс мае наступныя аргументы:

WRAPCOLS(вектар, колькасць_абгортак, [pad_with])

Дзе:

  • вектар (абавязкова) - зыходны аднамерны масіў або дыяпазон.
  • wrap_count (абавязкова) - максімальная колькасць значэнняў у слупку.
  • pad_with (неабавязкова) - значэнне, якое трэба запоўніць апошнім слупком, калі для яго запаўнення недастаткова элементаў. Калі апусціць, адсутныя значэнні будуць дапоўнены #N/A (па змаўчанні).

Напрыклад, каб змяніць дыяпазон B5:B24 на 2-мерны масіў з 5 значэннямі ў слупку, формула:

=WRAPROWS(B5:B24, 5)

Вы ўводзіцеаргумент vector не з'яўляецца аднамерным масівам.

#NUM! error

Памылка #NUM узнікае, калі значэнне wrap_count роўна 0 або адмоўнаму ліку.

#SPILL! error

Часцей за ўсё памылка #SPILL паказвае на тое, што недастаткова пустых вочак, каб выліць вынікі. Ачысціце суседнія клеткі, і ён знікне. Калі памылка не знікне, праверце, што азначае #SPILL у Excel і як гэта выправіць.

Вось як выкарыстоўваць функцыі WRAPCOLS і WRAPROWS для пераўтварэння аднамернага дыяпазону ў двухмерны масіў у Excel. Я дзякую вам за чытанне і спадзяюся ўбачыць вас у нашым блогу на наступным тыдні!

Практычны сшытак для спампоўкі

Функцыі WRAPCOLS і WRAPROWS - прыклады (файл .xlsx)

формулу ў любую асобную ячэйку, і яна аўтаматычна разліваецца на столькі вочак, колькі неабходна. У вывадзе WRAPCOLS значэнні размешчаны вертыкальна, зверху ўніз, на аснове значэння wrap_count. Пасля дасягнення адліку пачынаецца новы слупок.

Функцыя Excel WRAPROWS

Функцыя WRAPROWS у Excel пераўтварае радок або слупок значэнняў у двухмерны масіў у залежнасці ад колькасці значэнняў у радку, якую вы вызначаеце.

Сінтаксіс наступны:

WRAPROWS(вектар, колькасць_абгортак, [pad_with])

Дзе:

  • вектар (абавязкова) - зыходны аднамерны масіў або дыяпазон.
  • wrap_count (абавязкова) - максімальная колькасць значэнняў у радку.
  • pad_with (неабавязкова) - значэнне для запаўнення з апошнім радком, калі для яго запаўнення недастаткова элементаў. Па змаўчанні #N/A.

Напрыклад, каб пераўтварыць дыяпазон B5:B24 у 2D масіў з 5 значэннямі ў кожным радку, формула:

=WRAPROWS(B5:B24, 5)

Вы ўводзіце формулу ў верхнюю левую ячэйку дыяпазону разліву, і яна аўтаматычна запаўняе ўсе астатнія ячэйкі. Функцыя WRAPROWS упарадкоўвае значэнні па гарызанталі злева направа на аснове значэння wrap_count . Пасля дасягнення адліку пачынаецца новы радок.

Даступнасць WRAPCOLS і WRAPROWS

Абедзве функцыі даступныя толькі ў Excel для Microsoft 365 (Windows і Mac) і Excel для Інтэрнэту.

Ранейверсіі, вы можаце выкарыстоўваць традыцыйныя больш складаныя формулы для выканання пераўтварэнняў слупка ў масіў і радка ў масіў. Далей у гэтым уроку мы падрабязна абмяркуем альтэрнатыўныя рашэнні.

Падказка. Каб выканаць адваротную аперацыю, г.зн. змяніць 2D-масіў на адзіночны слупок або радок, выкарыстоўвайце функцыю TOCOL або TOROW адпаведна.

Як пераўтварыць слупок/радок у дыяпазон у Excel - прыклады

Цяпер, калі вы зразумелі асноўнае выкарыстанне, давайце больш падрабязна разгледзім некалькі больш канкрэтных выпадкаў.

Усталюйце максімальную колькасць значэнняў у слупку або радку

У залежнасці ад структуру вашых зыходных даных, вы можаце палічыць прыдатным для пераўпарадкавання ў слупкі (WRAPCOLS) або радкі (WRAPROWS). Якую б функцыю вы ні выкарыстоўвалі, менавіта аргумент wrap_count вызначае максімальную колькасць значэнняў у кожным слупку/радку.

Напрыклад, каб пераўтварыць дыяпазон B4:B23 у 2D масіў, каб кожны слупок меў максімум 10 значэнняў, выкарыстоўвайце наступную формулу:

=WRAPCOLS(B4:B23, 10)

Каб пераставіць адзін і той жа дыяпазон па радку, каб кожны радок меў максімум 4 значэнні, формула :

=WRAPROWS(B4:B23, 4)

На малюнку ніжэй паказана, як гэта выглядае:

Запоўніце адсутныя значэнні ў атрыманым масіве

У выпадку, калі значэнняў для запаўнення недастаткова усе слупкі/радкі выніковага дыяпазону, WRAPROWS і WRAPCOLS вернуць памылку #N/A, каб захаваць структуру 2D-масіва.

Каб змяніць значэнне па змаўчанніпаводзіны, вы можаце даць карыстальніцкае значэнне для дадатковага аргумента pad_with .

Напрыклад, каб пераўтварыць дыяпазон B4:B21 у 2D-масіў з максімум 5 значэннямі ў шырыню і запоўніць апошні радок з працяжнікамі, калі недастаткова даных для яго запаўнення, выкарыстоўвайце наступную формулу:

=WRAPROWS(B4:B21, 5, "-")

Каб замяніць прапушчаныя значэнні радкамі нулявой даўжыні (прабелы), формула:

=WRAPROWS(B4:B21, 5, "")

Калі ласка, параўнайце вынікі з паводзінамі па змаўчанні (формула ў D5), дзе pad_with апушчаны:

Аб'яднаць некалькі радкоў у 2D дыяпазон

Каб аб'яднаць некалькі асобных радкоў у адзіны 2D-масіў, вы спачатку складваеце радкі гарызантальна з дапамогай функцыі HSTACK, а потым абгартаеце значэнні з дапамогай WRAPROWS або WRAPCOLS.

Напрыклад, каб аб'яднаць значэнні з 3 радкі (B5:J5, B7:G7 і B9:F9) і абгарнуць у слупкі, кожны з якіх змяшчае 10 значэнняў, формула:

=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

Каб аб'яднаць значэнні з некалькіх радкоў у 2D-дыяпазон, дзе кожны радок змяшчае 5 значэнняў, формула прымае наступны выгляд:

=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

C аб'яднаць некалькі слупкоў у 2D-масіў

Каб аб'яднаць некалькі слупкоў у 2D-дыяпазон, спачатку вы складваеце іх вертыкальна з дапамогай функцыі VSTACK, а потым аб'ядноўваеце значэнні ў радкі (WRAPROWS) або слупкі (WRAPCOLS).

Напрыклад, каб аб'яднаць значэнні з 3 слупкоў (B5:J5, B7:G7 і B9:F9) у 2D дыяпазон, дзе кожны слупок змяшчае 10 значэнняў, формула:

=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

Аб'яднацьаднолькавыя слупкі ў 2D-дыяпазон, дзе кожны радок змяшчае 5 значэнняў, выкарыстоўвайце наступную формулу:

=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

Аберніце і адсарціруйце масіў

У сітуацыі, калі зыходны дыяпазон мае значэнні ў у выпадковым парадку, у той час як вы жадаеце, каб вывад быў адсартаваны, паступайце наступным чынам:

  1. Сартуйце пачатковы масіў так, як вы хочаце, выкарыстоўваючы функцыю SORT.
  2. Пастаўце адсартаваны масіў у WRAPCOLS або WRAPROWS.

Напрыклад, каб абгарнуць дыяпазон B4:B23 у радкі, па 4 значэнні ў кожным, і адсартаваць атрыманы дыяпазон ад A да Z, пабудуйце такую ​​формулу:

=WRAPROWS(SORT(B4:B23), 4)

Каб абгарнуць адзін і той жа дыяпазон у слупкі, па 10 значэнняў у кожным, і адсартаваць вывад у алфавітным парадку, формула:

=WRAPCOLS(SORT(B4:B23), 10)

Вынікі выглядаюць наступным чынам :

Савет. Каб упарадкаваць значэнні ў выніковым масіве ў парадку змяншэння , усталюйце трэці аргумент ( парадак_сартавання ) функцыі SORT на -1.

Альтэрнатыва WRAPCOLS для Excel 365 - 2010

У старых версіях Excel, дзе функцыя WRAPCOLS не падтрымліваецца, вы можаце стварыць сваю ўласную формулу для абгортвання значэнняў з аднамернага масіва ў слупкі. Гэта можна зрабіць, выкарыстоўваючы разам 5 розных функцый.

Альтэрнатыва WRAPCOLS для пераўтварэння радка ў 2D-дыяпазон:

IFERROR(IF(ROW(A1)> n , "" , INDEX( дыяпазон_радкоў , , ROW(A1) + (COLUMN(A1)-1)* n )), "")

Альтэрнатыва WRAPCOLS для пераўтварэння слупка ў 2D дыяпазон:

IFERROR(IF(ROW(A1)> n ,"", INDEX( дыяпазон_слупкоў , ROW(A1) + (COLUMN(A1)-1)* n )), "")

Дзе n - гэта максімальная колькасць значэнняў у слупку.

На малюнку ніжэй мы выкарыстоўваем наступную формулу, каб ператварыць дыяпазон з аднаго радка (D4:J4) у масіў з трох радкоў.

=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")

І гэтая формула змяняе дыяпазон з аднаго слупка (B4:B20) у масіў з пяці радкоў:

=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")

Прыведзеныя вышэй рашэнні эмулююць аналагічныя формулы WRAPCOLS і даюць аднолькавыя вынікі:

=WRAPCOLS(D4:J4, 3, "")

і

=WRAPCOLS(B4:B20, 5, "")

Майце на ўвазе, што ў адрозненне ад функцыі дынамічнага масіву WRAPCOLS, традыцыйныя формулы прытрымліваюцца падыход адной формулы - адной клеткі. Такім чынам, наша першая формула ўводзіцца ў D8 і капіюецца на 3 радкі ўніз і на 3 слупкі справа. Другая формула ўводзіцца ў D14 і капіюецца на 5 радкоў уніз і на 4 слупкі справа.

Як працуюць гэтыя формулы

У аснове абедзвюх формул мы выкарыстоўваем функцыю INDEX, якая вяртае значэнне з атрыманага масіва на аснове нумара радка і слупка:

INDEX(array, row_num, [column_num])

Паколькі мы маем справу з аднарадковым масівам, мы можам апусціць аргумент row_num , таму ён па змаўчанні роўны 1. Хітрасць у тым, каб мець col_num разлічваецца аўтаматычна для кожнай ячэйкі, куды капіюецца формула. І вось як мы гэта робім:

ROW(A1)+(COLUMN(A1)-1)*3)

Функцыя ROW вяртае нумар радка спасылкі A1, які роўны 1.

Функцыя COLUMN вяртае нумар слупкаспасылка A1, якая таксама роўная 1. Адніманне 1 ператварае яго ў нуль. І памнажэнне 0 на 3 дае 0.

Затым вы складаеце 1, вернуты радком, і 0, вернуты Слупком, і ў выніку атрымліваеце 1.

Такім чынам, формула INDEX у верхняй частцы -левая ячэйка дыяпазону прызначэння (D8) падвяргаецца гэтаму пераўтварэнню:

INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))

змяняецца на

INDEX($D$4:$J$4, ,1)

і вяртае значэнне з 1-га слупка вызначанага масіва, які з'яўляецца "Яблыкамі" ў D4.

Калі формула капіюецца ў ячэйку D9, адносныя спасылкі на ячэйкі змяняюцца ў залежнасці ад адноснага размяшчэння радкоў і слупкоў, у той час як спасылка на абсалютны дыяпазон застаецца нязменнай:

INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))

ператвараецца ў:

INDEX($D$4:$J$4,, 2+(1-1)*3))

становіцца:

INDEX($D$4:$J$4,, 2))

і вяртае значэнне з 2-і слупок пазначанага масіва, які з'яўляецца "Абрыкосы" ў E4.

Функцыя IF правярае нумар радка і, калі ён большы за колькасць радкоў, якую вы ўказалі (3 у нашым выпадку), вяртае пусты радок ( ""), інакш вынік функцыі INDEX:

IF(ROW(A1)>3, "", INDEX(…))

Нарэшце, функцыя IFERROR выпраўляе #REF! памылка, якая ўзнікае, калі формула капіюецца ў большую колькасць вочак, чым сапраўды патрэбна.

Другая формула, якая пераўтварае слупок у 2D-дыяпазон, працуе з той жа логікай. Розніца ў тым, што вы выкарыстоўваеце камбінацыю ROW + COLUMN, каб высветліць аргумент row_num для INDEX. Параметр col_num у гэтым выпадку не патрэбны, бо ёсць простаадзін слупок у зыходным масіве.

Альтэрнатыва WRAPROWS для Excel 365 - 2010

Каб абгарнуць значэнні з аднамернага масіва ў радкі ў Excel 2019 і больш ранніх версіях, вы можаце выкарыстоўваць наступныя альтэрнатывы функцыі WRAPROWS.

Пераўтварэнне радка ў 2D-дыяпазон:

IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , COLUMN(A1)+(ROW(A1)-1)* n )), "")

Змяніць слупок на 2D дыяпазон:

IFERROR(IF( COLUMN(A1)> n , "", INDEX( column_range , COLUMN(A1)+(ROW(A1)-1)* n )) , "")

Дзе n - гэта максімальная колькасць значэнняў у радку.

У нашым прыкладзе даных мы выкарыстоўваем наступную формулу для пераўтварэння дыяпазону ў адзін радок (D4 :J4) у дыяпазон з трох слупкоў. Формула трапляе ў ячэйку D8, а затым капіюецца ў 3 слупкі і 3 радкі.

=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")

Каб змяніць форму дыяпазону з 1 слупка (B4:B20) у дыяпазон з 5 слупкоў, увядзіце прыведзеную ніжэй формулу ў D14 і перацягніце яе праз 5 слупкоў і 4 радкі.

=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")

У Excel 365 такіх жа вынікаў можна дасягнуць з дапамогай эквівалентных формул WRAPCOLS:

=WRAPROWS(D4:J4, 3, "")

і

=WRAPROWS(B4:B20, 5, "")

Як працуюць гэтыя формулы

Па сутнасці, гэтыя формулы працуюць як у папярэднім прыкладзе. Розніца ў тым, як вы вызначаеце каардынаты row_num і col_num для функцыі INDEX:

INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))

Каб атрымаць нумар слупка для верхняга левая ячэйка ў дыяпазоне прызначэння (D8), вы выкарыстоўваеце гэтавыраз:

COLUMN(A1)+(ROW(A1)-1)*3)

, які змяняецца на:

1+(1-1)*3

і дае 1.

У выніку прыведзеная ніжэй формула вяртае значэнне з першага слупка пазначанага масіва, які з'яўляецца "Яблыкі":

INDEX($D$4:$J$4,, 1)

Да гэтага часу вынік такі ж, як і ў папярэднім прыклад. Але давайце паглядзім, што адбываецца ў іншых ячэйках...

У ячэйцы D9 адносныя спасылкі на ячэйкі змяняюцца наступным чынам:

INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))

Такім чынам, формула ператвараецца ў:

INDEX($D$4:$J$4,, 1+(2-1)*3))

становіцца:

INDEX($D$4:$J$4,, 4))

і вяртае значэнне з 4-га слупка вызначанага масіва, які з'яўляецца "Вішні" ў G4.

Функцыя КАЛІ правярае нумар слупка і, калі ён перавышае зададзеную вамі колькасць слупкоў, вяртае пусты радок (""), інакш вынік функцыі INDEX:

IF(COLUMN(A1)>3, "", INDEX(…))

У якасці апошняга штрыха IFERROR прадухіляе #REF! памылкі ад з'яўлення ў "лішніх" ячэйках, калі вы скапіруеце формулу ў большую колькасць ячэек, чым патрэбна.

Функцыя WRAPCOLS або WRAPROWS не працуе

Калі функцыі "абгортвання" недаступныя у вашым Excel або прывесці да памылкі, хутчэй за ўсё, гэта адна з прыведзеных ніжэй прычын.

#NAME? памылка

У Excel 365 #NAME? можа адбыцца памылка, таму што вы няправільна напісалі назву функцыі. У іншых версіях гэта азначае, што функцыі не падтрымліваюцца. У якасці абыходнага шляху вы можаце выкарыстоўваць альтэрнатыву WRAPCOLS або WRAPROWS.

#VALUE! error

Памылка #VALUE узнікае, калі

Майкл Браўн - адданы энтузіяст тэхналогій, які любіць спрашчэнне складаных працэсаў з дапамогай праграмных інструментаў. Маючы больш чым дзесяцігадовы досвед працы ў індустрыі тэхналогій, ён удасканальваў свае навыкі ў Microsoft Excel і Outlook, а таксама ў Google Sheets і Docs. Блог Майкла прысвечаны таму, каб падзяліцца сваімі ведамі і вопытам з іншымі, даючы простыя ў выкананні парады і падручнікі для павышэння прадукцыйнасці і эфектыўнасці. Незалежна ад таго, з'яўляецеся вы дасведчаным прафесіяналам або пачаткоўцам, блог Майкла прапануе каштоўную інфармацыю і практычныя парады, каб атрымаць максімальную аддачу ад гэтых неабходных праграмных інструментаў.