Зміст
Швидкий спосіб перетворити діапазон комірок в один ряд за допомогою функції TOROW функцію.
У Microsoft Excel 365 з'явилося кілька нових функцій для виконання різних маніпуляцій з масивами. За допомогою TOROW можна швидко виконувати перетворення діапазону в рядок. Ось перелік завдань, які може виконати ця нова функція:
Функція Excel TOROW
Функція СРЗНАЧ в Excel використовується для перетворення масиву або діапазону комірок в один рядок.
Функція отримує всього три аргументи, з яких тільки перший є обов'язковим.
TOROW(array, [ignore], [scan_by_column])Де:
Масив (обов'язково) - масив або діапазон для перетворення в один рядок.
Ігнорувати (необов'язково) - визначає, чи ігнорувати пропуски та/або помилки. Може приймати одне з цих значень:
- 0 або пропущено (за замовчуванням) - зберегти всі значення
- 1 - ігнорувати пропуски
- 2 - ігнорувати помилки
- 3 - ігнорувати пропуски та помилки
Scan_by_columns (необов'язково) - визначає спосіб сканування масиву:
- FALSE або пропущено (за замовчуванням) - сканувати масив по горизонталі по рядках.
- TRUE - сканувати масив по вертикалі по стовпчику.
Чайові:
- Для перетворення масиву в один стовпець використовується функція TOCOL.
- Для виконання зворотного перетворення рядка в масив використовуйте функцію WRAPCOLS для обгортання в стовпці або функцію WRAPPROWS для обгортання масиву в рядки.
- Для перетворення рядків у стовпці використовуйте функцію TRANSPOSE.
Доступність TOROW
TOROW - це нова функція, яка підтримується тільки в Excel для Microsoft 365 (для Windows і Mac) та Excel для Інтернету.
Базова формула TOROW в Excel
Щоб зробити просте перетворення діапазону в рядок, використовуйте формулу ТОРУ в її базовому вигляді. Для цього потрібно визначити тільки перший аргумент ( масив ).
Наприклад, щоб перетворити двовимірний масив, що складається з 3 стовпців і 3 рядків, в один рядок, використовується формула:
=TOROW(A3:C6)
Ви вводите формулу лише в одну комірку (в нашому випадку A10), і вона автоматично розливається в стільки комірок, скільки потрібно, щоб вмістити всі результати. В термінах Excel діапазон виведення, оточений тонкою синьою рамкою, називається діапазоном розливу.
Як працює ця формула:
Спочатку заданий діапазон комірок перетворюється у двовимірний масив. Зверніть увагу на стовпчики, розділені комами, та рядки, розділені крапкою з комою:
{"Apple","Banana","Cherry";1,2,3;4,5,6;7,8,9}
Потім функція TOROW зчитує масив зліва направо і перетворює його в одновимірний горизонтальний масив:
{"Apple","Banana","Cherry",1,2,3,4,5,6,7,8,9}
Результат потрапляє в комірку А10, з якої переливається в сусідню комірку праворуч.
Перетворення діапазону в рядок без урахування пропусків і помилок
За замовчуванням функція СРЗНАЧ зберігає всі значення з вихідного масиву, включаючи порожні комірки і помилки. На виході на місці порожніх комірок з'являються нульові значення, що може бути досить заплутано.
До виключити порожні місця встановіть значення ігнорувати аргумент до 1:
=TOROW(A3:C5, 1)
До ігнорувати помилки встановіть значення ігнорувати аргумент до 2:
=TOROW(A3:C5, 2)
Пропустити обидва, пропуски та помилки використовуйте 3 для ігнорувати аргумент:
=TOROW(A3:C5, 3)
На зображенні нижче показані всі три сценарії в дії:
Читання масиву по горизонталі або вертикалі
При поведінці за замовчуванням функція TOROW обробляє масив по горизонталі зліва направо. Для сканування значень по стовпчику зверху вниз задається 3-й аргумент ( scan_by_column ) до TRUE або 1.
Наприклад, для зчитування вихідного діапазону по рядках, формула в E3 має вигляд:
=TOROW(A3:C5)
Для сканування діапазону по стовпчику використовується формула в E8:
=TOROW(A3:C5, ,TRUE)
В обох випадках отримані масиви мають однаковий розмір, але значення розташовані в різному порядку.
Об'єднання декількох діапазонів в один рядок
Щоб об'єднати кілька несуміжних діапазонів в один рядок, потрібно спочатку скласти їх по горизонталі або вертикалі в єдиний масив за допомогою функцій HSTACK або VSTACK відповідно, а потім за допомогою функції TOROW перетворити об'єднаний масив в рядок.
Залежно від вашої бізнес-логіки, завдання буде виконувати одна з наступних формул.
Складати масиви по горизонталі та конвертувати по рядках
З першим діапазоном в A3:C4 і другим діапазоном в A8:C9, наведена нижче формула складе два діапазони горизонтально в один масив, а потім перетворить його в рядок, що зчитує значення зліва направо. Результат знаходиться в E3 на зображенні нижче.
=TOROW(HSTACK(A3:C4, A8:C9))
Складати масиви по горизонталі та конвертувати по стовпцях
Щоб прочитати укладений масив вертикально зверху вниз, потрібно встановити 3-й аргумент TOROW в TRUE, як показано в E5 на зображенні нижче:
=TOROW(HSTACK(A3:C4, A8:C9), ,TRUE)
Складати масиви по вертикалі та конвертувати по рядках
Для додавання кожного наступного масиву до нижньої частини попереднього масиву і зчитування об'єднаного масиву по горизонталі використовується формула в Е12:
=TOROW(VSTACK(A3:C4, A8:C9))
Складати масиви по вертикалі та конвертувати по стовпцях
Для додавання кожного наступного масиву в нижню частину попереднього і сканування об'єднаного масиву по вертикалі використовується формула:
=TOROW(VSTACK(A3:C4, A8:C9), ,TRUE)
Для кращого розуміння логіки зверніть увагу на різний порядок значень в отриманих масивах:
Витяг унікальних значень з діапазону в рядок
Починаючи з Microsoft Excel 2016, у нас є чудова функція УНИКВ, яка дозволяє легко отримати унікальні значення з одного стовпця або рядка. Однак вона не може обробляти масиви з декількома стовпцями. Щоб подолати це обмеження, використовуйте функції УНИКВ і ТОРОВКА разом.
Наприклад, для того, щоб витягти всі різні (відмінні) значення з діапазону A2:C7 і розмістити результати в одному рядку, використовується формула:
=UNIQUE(TOROW(A2:C7), TRUE)
Оскільки функція TOROW повертає одновимірний горизонтальний масив, то встановлюємо 2-й ( by_col ) аргумент UNIQUE на TRUE для порівняння стовпців між собою.
Якщо ви хочете, щоб результати були впорядковані в алфавітному порядку, оберніть наведену вище формулу у функцію СОРТУВАННЯ:
=SORT(UNIQUE(TOROW(A2:C7), TRUE), , ,TRUE )
Як і у випадку з UNIQUE, програма by_col аргумент SORT також має значення TRUE.
TOROW альтернатива для Excel 365 - 2010
У версіях Excel, де функція TOROW недоступна, ви можете перетворити діапазон в один рядок за допомогою комбінації декількох різних функцій, які працюють у старих версіях. Ці рішення є більш складними, але вони працюють.
Для сканування діапазону по горизонталі загальна формула має вигляд:
INDEX( діапазон , QUOTIENT(СТОВПЧИК (A1)-1, СТОВПЧИКИ( діапазон )+1, MOD(COLUMN(A1)-1, COLUMNS( діапазон ))+1)Для сканування діапазону по вертикалі загальна формула має вигляд:
INDEX( діапазон , MOD(COLUMN(A1)-1, COLUMNS( діапазон )+1, ДОБУТОК(СТОВПЧИК (A1)-1, СТОВПЧИКИ( діапазон ))+1)Для нашого прикладу набору даних у форматі А3:С5 формули мають такий вигляд:
Для сканування діапазону по рядках:
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
Ця формула є альтернативою функції ТОРОВ з 3-м аргументом, встановленим у значення ЛОЖЬ або опущеним:
=TOROW(A3:C5)
Для сканування діапазону по стовпчику:
=INDEX($A$3:$C$5, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
Ця формула еквівалентна функції ТОРОВ з 3-м аргументом, що має значення ІСТИНА:
=TOROW(A3:C5, ,TRUE)
Зверніть увагу, що на відміну від функції динамічного масиву СРЗНАЧ, ці традиційні формули слід вводити в кожну комірку, де ви хочете, щоб з'явилися результати. У нашому випадку перша формула (по рядку) потрапляє в Е3 і копіюється через М3. Друга формула (по стовпцю) потрапляє в Е8 і перетягується через М8.
Щоб формули коректно копіювалися, ми фіксуємо діапазон за допомогою абсолютних посилань ($A$3:$C$5). Також підійде іменований діапазон.
Якщо ви скопіювали формули в більше комірок, ніж потрібно, в "зайвих" комірках з'явиться помилка #REF! Щоб виправити її, оберніть формулу в функцію IFERROR таким чином:
=IFERROR(INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1), "")
Як працюють ці формули
Нижче наведено детальну розбивку першої формули, яка впорядковує значення за рядками:
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
В основі формули лежить функція ІНДЕКС для отримання значення комірки на основі її відносного положення в діапазоні.
На сьогоднішній день, на жаль, це не так. номер рядка розраховується за такою формулою:
QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1
Ідея полягає в тому, щоб створити повторювану послідовність чисел, таку як 1,1,1,1,2,2,2,2,3,3,3, ... де кожне число повторюється стільки разів, скільки стовпців у вихідному діапазоні. І ось як ми це робимо:
QUOTIENT повертає цілу частину від ділення.
За чисельник використовуємо функцію COLUMN(A1)-1, яка повертає порядковий номер від 0 у першій комірці, де введена формула до n (загальна кількість значень у діапазоні мінус 1) в останній комірці, в яку введена формула. У цьому прикладі ми маємо 0 в E2 і 8 в M3.
За знаменник ми використовуємо COLUMNS($A$3:$C$5)), яка повертає константне число, що дорівнює кількості стовпців у вашому діапазоні (3 в нашому випадку).
В результаті функція СУММЕСЛИ повертає 0 в перші 3 комірки (E3:G3), до яких ми додаємо 1, тому номер рядка дорівнює 1.
Для наступних 3 комірок (H3:J3) QUOTIENT повертає 1, а +1 дає номер рядка 2 і т.д.
Для розрахунку номер стовпчика Ви будуєте відповідну числову послідовність за допомогою функції MOD:
MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1
Оскільки в нашому асортименті 3 колонки, то послідовність повинна виглядати так: 1,2,3,1,2,3,...
Функція MOD повертає залишок після ділення.
В E3 MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+
стає
MOD(1-1, 3)+1)
і повертає 1.
В F3 MOD(COLUMN(B1)-1, COLUMNS($A$3:$C$5))+
стає
MOD(2-1, 3)+1)
і повертає 2.
Після встановлення номерів рядка і стовпця INDEX легко знаходить значення на перетині цього рядка і стовпця.
В E3 функція INDEX($A$3:$C$5, 1, 1) повертає значення з 1-го рядка і 1-го стовпця діапазону, на який посилаються, тобто з комірки A3.
У F3 функція INDEX($A$3:$C$5, 1, 2) повертає значення з 1-го рядка і 2-го стовпця, тобто з комірки B3.
І так далі.
Друга формула, яка сканує діапазон по стовпчику, працює аналогічно. Різниця в тому, що для обчислення номера рядка ми використовуємо МОДА, а для обчислення номера стовпчика - КІЛЬКІСТЬ.
Не працює функція TOROW
Якщо функція TOROW призводить до помилки, це, швидше за все, одна з цих причин:
#NAME? помилка
Для більшості функцій Excel помилка #NAME? чітко вказує на те, що ім'я функції написано неправильно. У випадку з TOROW це також може означати, що функція недоступна у вашому Excel. Якщо ваша версія Excel відрізняється від 365, спробуйте використати альтернативу TOROW.
Помилка #NUM
Помилка #NUM вказує на те, що повернутий масив не вміщується в рядку. Найчастіше це відбувається, коли ви посилаєтесь на цілі стовпці та/або рядки замість меншого діапазону.
помилка #SPILL
У більшості випадків помилка #SPILL свідчить про те, що в рядку, де введена формула, недостатньо порожніх клітинок для рознесення результатів. Якщо сусідні клітинки візуально порожні, переконайтеся, що в них немає пробілів або інших недрукованих символів. Для отримання додаткової інформації див. статтю Що означає помилка #SPILL в Excel.
Ось так можна використовувати функцію СРЗНАЧ в Excel для перетворення двовимірного масиву або діапазону в один рядок. Дякую за прочитання і сподіваюся побачити вас на нашому блозі наступного тижня!
Практичний посібник для завантаження
Функція TOROW Excel - приклади формул (файл .xlsx)