Перетворення стовпця / рядка в масив в Excel: функції WRAPCOLS і WRAPROWS

  • Поділитися Цим
Michael Brown

Найшвидший спосіб перетворення стовпця або рядка значень у двовимірний масив - використання функції СРЗНАЧ або СРЗНАЧ.

З перших днів існування Excel, він дуже добре справлявся з обчисленням та аналізом чисел. Але маніпулювання масивами традиційно було складним завданням. Впровадження динамічних масивів значно спростило використання формул масивів. І зараз Microsoft випускає набір нових функцій динамічних масивів для маніпулювання та зміни форми масивів. У цьому уроці ви навчитеся користуватися двома такими функціями,WRAPCOLS і WRAPROWS, для швидкого перетворення стовпця або рядка в 2D масив.

    Функція WRAPCOLS в Excel

    Функція СРЗНАЧ в Excel перетворює рядок або стовпець значень у двовимірний масив на основі заданої кількості значень у рядку.

    Синтаксис має наступні аргументи:

    WRAPCOLS(vector, wrap_count, [pad_with])

    Де:

    • вектор (обов'язково) - вихідний одновимірний масив або діапазон.
    • wrap_count (обов'язкове) - максимальна кількість значень у колонці.
    • pad_with (необов'язково) - значення для заповнення останнього стовпчика, якщо не вистачає елементів для його заповнення. Якщо не вказано, відсутні значення будуть заповнені #N/A (за замовчуванням).

    Наприклад, для зміни діапазону B5:B24 на двовимірний масив з 5 значеннями в стовпчику, формула має вигляд:

    =WRAPROWS(B5:B24, 5)

    Ви вводите формулу в будь-яку комірку, і вона автоматично розливається на стільки комірок, скільки потрібно. У вихідних даних WRAPCOLS значення розташовуються вертикально, зверху вниз, на основі wrap_count Після закінчення підрахунку починається новий стовпчик.

    Функція Excel WRAPROWS

    Функція СРЗНАЧ в Excel перетворює рядок або стовпець значень у двовимірний масив на основі вказаної вами кількості значень у рядку.

    Синтаксис наступний:

    WRAPROWS(vector, wrap_count, [pad_with])

    Де:

    • вектор (обов'язково) - вихідний одновимірний масив або діапазон.
    • wrap_count (обов'язково) - максимальна кількість значень у рядку.
    • pad_with (необов'язково) - значення для заповнення останнього рядка, якщо не вистачає елементів для його заповнення. За замовчуванням - #N/A.

    Наприклад, для перетворення діапазону B5:B24 у двовимірний масив по 5 значень у кожному рядку використовується формула:

    =WRAPROWS(B5:B24, 5)

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

    Наявність WRAPCOLS та WRAPROWS

    Обидві функції доступні лише в Excel для Microsoft 365 (Windows і Mac) та Excel для Інтернету.

    У більш ранніх версіях для виконання перетворень стовпця в масив і рядка в масив можна використовувати традиційні більш складні формули. Далі в цьому уроці ми детально розглянемо альтернативні рішення.

    Порада. Для виконання зворотної операції, тобто зміни двовимірного масиву на один стовпець або рядок, використовуйте функцію TOCOL або TOROW відповідно.

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

    Тепер, коли ви отримали уявлення про основне використання, давайте розглянемо кілька більш конкретних випадків.

    Встановити максимальну кількість значень у стовпці або рядку

    Залежно від структури вихідних даних, ви можете вважати за доцільне перегрупувати їх у стовпці (WRAPCOLS) або рядки (WRAPPROWS). Яку б функцію ви не використовували, вона є 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)

    Об'єднання декількох стовпців у 2D масив

    Щоб об'єднати кілька стовпців у 2D-діапазон, спочатку потрібно скласти їх по вертикалі за допомогою функції VSTACK, а потім обернути значення в рядки (WRAPPROWS) або стовпці (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( column_range РЯДОК(A1) + (СТОВПЕЦЬ(A1)-1)* n )), "")

    Де n максимальна кількість значень у стовпчику.

    На зображенні нижче ми використовуємо наступну формулу для перетворення однорядкового діапазону (D4:J4) в трирядковий масив.

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

    І ця формула перетворює одностовпчиковий діапазон (В4:В20) на п'ятирядковий масив:

    =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(array, row_num, [column_num])

    Оскільки ми маємо справу з однорядним масивом, то можемо опустити row_num тому за замовчуванням він дорівнює 1. Хитрість полягає в тому, щоб мати col_num обчислюється автоматично для кожної комірки, куди копіюється формула. І ось як ми це робимо:

    РЯДОК(A1)+(СТОВПЕЦЬ(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.

    Функція ЕСЛИ перевіряє номер рядка і, якщо він більший за вказану Вами кількість рядків (у нашому випадку 3), повертає порожній рядок (""), інакше - результат функції ИНДЕКС:

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

    Нарешті, функція IFERROR виправляє помилку #REF!, яка виникає, коли формула копіюється в більшу кількість комірок, ніж насправді потрібно.

    Друга формула, яка перетворює стовпець у 2D-діапазон, працює за тією ж логікою. Різниця полягає в тому, що ви використовуєте комбінацію ROW + COLUMN, щоб обчислити row_num аргумент на користь ІНДЕКСу. col_num в даному випадку не потрібен, оскільки у вихідному масиві лише один стовпець.

    Альтернатива WRAPROWS для Excel 365 - 2010

    Щоб обернути значення з одновимірного масиву в рядки в Excel 2019 і більш ранніх версіях, можна скористатися наступними альтернативами функції ОБРАБОТКА.

    Перетворення рядка в 2D діапазон:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( ряд_діапазон , , СТОВПЧИК(A1)+(РЯДОК(A1)-1)* n )), "")

    Змінити стовпець на 2D діапазон:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( column_range СТОВПЕЦЬ(A1)+(РЯДОК(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)), "")

    Щоб перетворити діапазон з одного стовпчика (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), використовується цей вираз:

    СТОВПЧИК(A1)+(РЯДОК(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 є "Cherry".

    Функція ЕСЛИ перевіряє номер стовпця і, якщо він більший за вказану Вами кількість стовпців, повертає порожній рядок (""), інакше - результат функції ИНДЕКС:

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

    На завершення, IFERROR запобігає появі помилок #REF! в "зайвих" комірках, якщо ви копіюєте формулу в більшу кількість комірок, ніж насправді потрібно.

    Не працює функція WRAPCOLS або WRAPROWS

    Якщо функції "обгортання" недоступні у вашому Excel або призводять до помилки, це, швидше за все, пов'язано з однією з наведених нижче причин.

    #NAME? помилка

    В Excel 365 помилка #ИМЯ? може виникнути через неправильне написання імені функції. В інших версіях вона вказує на те, що функції не підтримуються. Як обхідний шлях можна використовувати альтернативу WRAPCOLS або альтернативу WRAPROWS.

    #VALUE! помилка

    Помилка #VALUE виникає у випадку, якщо вектор аргумент не є одновимірним масивом.

    #NUM! помилка

    Помилка #NUM виникає у випадку, якщо wrap_count значення 0 або від'ємне число.

    #SPILL! помилка

    Найчастіше помилка #SPILL вказує на те, що не вистачає порожніх клітинок для рознесення результатів. Очистіть сусідні клітинки, і вона зникне. Якщо помилка не зникає, перевірте, що означає #SPILL в Excel і як її виправити.

    Ось так можна використовувати функції СРЗНАЧ і СРЗНАЧ для перетворення одновимірного діапазону в двовимірний масив в Excel. Дякую за увагу і сподіваюся побачити вас на нашому блозі наступного тижня!

    Практичний посібник для завантаження

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

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.