Змест
Самы хуткі спосаб пераўтварыць слупок або радок значэнняў у двухмерны масіў - гэта выкарыстоўваць функцыю 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)
Аберніце і адсарціруйце масіў
У сітуацыі, калі зыходны дыяпазон мае значэнні ў у выпадковым парадку, у той час як вы жадаеце, каб вывад быў адсартаваны, паступайце наступным чынам:
- Сартуйце пачатковы масіў так, як вы хочаце, выкарыстоўваючы функцыю SORT.
- Пастаўце адсартаваны масіў у 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 узнікае, калі