Зміст
Простий спосіб перетворення масиву або діапазону в стовпець за допомогою функції TOCOL.
Можливість переносити дані зі стовпців у рядки і навпаки існує в Excel вже досить давно. Але перетворення діапазону комірок в один стовпець було складним завданням. Тепер, нарешті, це змінюється. Microsoft представила нову функцію під назвою TOCOL, яка може виконати перетворення масиву в стовпець в одну мить. Нижче наведено перелік завдань, які ця нова функція може легко вирішити.
Функція TOCOL в Excel
Функція TOCOL в Excel перетворює масив або діапазон комірок в один стовпець.
Функція отримує три аргументи, але обов'язковим є тільки перший.
TOCOL(array, [ignore], [scan_by_column])Де:
Масив (обов'язково) - масив або діапазон для перетворення в стовпець.
Ігнорувати (необов'язково) - визначає, чи ігнорувати пропуски та/або помилки. Може приймати одне з цих значень:
- 0 або пропущено (за замовчуванням) - зберегти всі значення
- 1 - ігнорувати пропуски
- 2 - ігнорувати помилки
- 3 - ігнорувати пропуски та помилки
Scan_by_columns (необов'язково) - визначає, сканувати масив по горизонталі чи по вертикалі:
- FALSE або пропущено (за замовчуванням) - сканувати масив по рядках зліва направо.
- TRUE - сканувати масив по стовпчику зверху вниз.
Чайові:
- Для перетворення масиву в один рядок використовується функція СРЗНАЧ.
- Для зворотного перетворення стовпця в масив використовуйте або функцію WRAPCOLS для обгортання по стовпцях, або функцію WRAPPROWS для обгортання по рядках.
- Для транспонування масиву з горизонтального у вертикальний або навпаки, тобто заміни рядків на стовпці, використовується функція ТРАНСПОЗИЦИЯ.
Доступність TOCOL
TOCOL - це нова функція, яка підтримується в Excel для Microsoft 365 (для Windows і Mac) та Excel для Інтернету.
Базова формула TOCOL для перетворення діапазону в стовпець
Формула TOCOL у найпростішому вигляді вимагає лише одного аргументу - це масив Наприклад, для розміщення двовимірного масиву, що складається з 3 стовпців і 4 рядків, в один стовпець, формула має вигляд:
=TOCOL(A2:C5)
Формула вводиться тільки в одну комірку (E2 в цьому прикладі) і автоматично розливається в наступні комірки. З точки зору Excel, результат називається діапазоном розливу.
Як працює ця формула:
Технічно діапазон A2:C5 спочатку перетворюється у двовимірний масив. Зверніть увагу на рядки, розділені крапкою з комою, та стовпці, розділені комами:
{"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}
Функція TOCOL сканує масив зліва направо і перетворює його в одновимірний вертикальний масив:
{"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}
Результат поміщається в комірку Е2, з якої він розливається в наступні комірки.
Як використовувати функцію TOCOL в Excel - приклади формул
Щоб краще зрозуміти можливості функції TOCOL та які завдання вона може вирішувати, розглянемо деякі приклади формул.
Перетворення масиву в стовпець без пропусків та помилок
Як ви могли помітити в попередньому прикладі, формула TOCOL за замовчуванням зберігає всі значення з вихідного масиву, включаючи порожні комірки і помилки.
В отриманому масиві порожні комірки представлені нулями, що може бути досить незрозуміло, особливо якщо у вихідному масиві є 0 значень. Рішення полягає у наступному пропуск заготовок Для цього ви встановлюєте 2-й аргумент рівним 1:
=TOCOL(A2:C5, 1)
До ігнорувати помилки встановіть 2-й аргумент рівним 2:
=TOCOL(A2:C5, 2)
Виключити і те, і інше, пропуски та помилки використовуйте 3 для ігнорувати аргумент:
=TOCOL(A2:C5, 3)
Сканування масиву по горизонталі або вертикалі
За замовчуванням scan_by_column (FALSE або опущений), функція TOCOL сканує масив по горизонталі по рядках. Для обробки значень по стовпцях цей аргумент встановлюється в TRUE або 1. Наприклад, для обробки значень по стовпцях:
=TOCOL(A2:C5, ,TRUE)
Зверніть увагу, що в обох випадках масиви, що повертаються, мають однаковий розмір, але значення розташовані в різному порядку.
Об'єднання декількох діапазонів в одну колонку
Якщо ви маєте справу з декількома несуміжними діапазонами, то можна спочатку об'єднати діапазони по вертикалі в єдиний масив за допомогою функції VSTACK, а потім за допомогою TOCOL перетворити об'єднаний масив в стовпець.
Якщо припустити, що перший діапазон - A2:C4, а другий діапазон - A8:C9, то формула набуває такого вигляду:
=TOCOL(VSTACK(A2:C4, A8:C9))
Ця формула демонструє поведінку за замовчуванням - зчитує об'єднані масиви горизонтально зліва направо, як показано в колонці E на зображенні нижче.
Для зчитування значень по вертикалі зверху вниз встановлюється 3-й аргумент TOCOL в значення TRUE:
=TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)
Зверніть увагу, що в даному випадку формула спочатку повертає значення зі стовпця A обох масивів, потім зі стовпця B і т.д. Причина в тому, що TOCOL сканує єдиний стековий масив, а не вихідні окремі діапазони.
Якщо ваша бізнес-логіка вимагає складання вихідних діапазонів по горизонталі, а не по вертикалі, то використовуйте функцію HSTACK замість VSTACK.
Для додавання кожного наступного масиву справа від попереднього і зчитування об'єднаних масивів по горизонталі використовується формула:
=TOCOL(HSTACK(A2:C4, A8:C10))
Для додавання кожного наступного масиву праворуч від попереднього і сканування об'єднаних масивів по вертикалі використовується формула:
=TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)
Вилучення унікальних значень з багатостовпчикового діапазону
Функція УНИКВ Excel легко знаходить унікальні значення в одному стовпці або рядку, а також повертає унікальні рядки, але не може витягти унікальні значення з багатостовпчикового масиву. Вирішенням є використання її разом з функцією ТОКОЛ.
Наприклад, для вилучення всіх різних (відмінних) значень з діапазону A2:C7 використовується формула:
=UNIQUE(TOCOL(A2:C7))
Додатково можна обернути вищенаведену формулу у функцію SORT, щоб упорядкувати масив, що повертається, в алфавітному порядку:
=SORT(UNIQUE(TOCOL(A2:C7)))
Як перетворити діапазон у стовпець в Excel 365 - 2010
У версіях Excel, де функція TOCOL не підтримується, існує кілька альтернативних способів перетворення діапазону комірок в стовпець. Ці рішення досить хитрі, але в будь-якому випадку працюють.
Зчитування діапазону по рядках:
INDEX( діапазон , QUOTIENT(ROW(A1)-1, COLUMNS( діапазон ))+1, MOD(ROW(A1)-1, COLUMNS( діапазон ))+1)Зчитування діапазону по стовпчику:
INDEX( діапазон , MOD(ROW(A1)-1, ROWS( діапазон )+1, QUOTIENT(ROW(A1)-1, ROWS( діапазон ))+1)Для нашого вибіркового набору даних формули виглядають наступним чином:
Для сканування діапазону по горизонталі зліва направо :
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
Ця формула еквівалентна функції TOCOL з 3-м аргументом, встановленим в значення ЛОЖЬ або опущеним:
=TOCOL(A2:C5)
Для сканування діапазону вертикально зверху вниз :
=INDEX($A$2:$C$5, MOD(ROW(A1)-1, ROWS($A$2:$C$5))+1, QUOTIENT(ROW(A1)-1, ROWS($A$2:$C$5))+1)
Цю формулу можна порівняти з функцією TOCOL з 3-м аргументом, що має значення ІСТИНА:
=TOCOL(A2:C5, ,TRUE)
На відміну від TOCOL, альтернативні формули слід вводити в кожну комірку, де ви хочете, щоб з'явилися результати. У нашому випадку формули потрапляють в комірки E2 (по рядку) і G2 (по стовпцю), а потім копіюються вниз до рядка 13.
Якщо формули будуть скопійовані в більшу кількість рядків, ніж потрібно, то в "зайвих" комірках з'явиться помилка #REF!. Щоб цього не сталося, можна вкласти формули в функцію ЕСЛИ таким чином:
=IFERROR(INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1), "")
Зверніть увагу, що для коректного копіювання формул ми блокуємо діапазон за допомогою абсолютних посилань на комірки ($A$2:$C$5). Замість цього можна використовувати іменований діапазон.
Як працюють ці формули
Нижче наведено детальну розбивку першої формули, яка впорядковує клітинки за рядками:
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
Ідея полягає в тому, щоб за допомогою функції ІНДЕКС повернути значення певної комірки на основі її відносних номерів рядка і стовпця в діапазоні.
На сьогоднішній день, на жаль, це не так. номер рядка розраховується за цією комбінацією:
QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
QUOTIENT повертає цілу частину від ділення.
За чисельник використовується функція ROW(A1)-1, яка повертає порядковий номер від 0 в комірці E2 (перша комірка, в яку вводиться формула) до 11 в комірці E13 (остання комірка, в яку вводиться формула).
На сьогоднішній день, на жаль, це не так. знаменник принесений COLUMNS($A$2:$C$5)) є константою і дорівнює кількості стовпців у вашому діапазоні (у нашому випадку - 3).
Тепер, якщо ви перевірите результат QUOTE для перших 3 комірок (E2:E4), то побачите, що він дорівнює 0 (тому що ціла частина ділення дорівнює нулю). Додавання 1 дає номер рядка 1.
Для наступних 3 клітинок (E5:E5) QUOTIENT повертає 1, а операція +1 видає рядок з номером 2. І так далі.
Іншими словами, ця частина формули створює повторювану послідовність чисел, таку як 1,1,1,1,2,2,2,3,3,3,3,4,4,4,... Кожне число повторюється стільки разів, скільки стовпців у вашому діапазоні.
Для розрахунку номер стовпчика Ви будуєте відповідну числову послідовність за допомогою функції MOD:
MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
Оскільки в нашому діапазоні 3 стовпчики (A2:C5), то послідовність повинна бути 1,2,3,1,2,3,...
Функція MOD повертає залишок після ділення.
В E2 MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
стає
MOD(1-1, 3)+1)
і повертає 1.
В E3 MOD(ROW(A2)-1, COLUMNS($A$2:$C$5))+1)
стає
MOD(2-1, 3)+1)
і повертає 2.
Після встановлення номерів рядків і стовпців INDEX без проблем витягує необхідне значення.
В E2 функція INDEX($A$2:$C$5, 1, 1) повертає значення з 1-го рядка і 1-го стовпця діапазону, на який є посилання, тобто з комірки A2.
В E3 функція INDEX($A$2:$C$5, 1, 2) повертає значення з 1-го рядка і 2-го стовпця, тобто з комірки B2.
І так далі.
Друга формула, яка сканує діапазон по стовпцях, працює аналогічно. Різниця в тому, що для отримання номера рядка використовується МОДА, а для отримання номера стовпця - КІЛЬКІСТЬ.
Не працює функція TOCOL
Якщо функція TOCOL видає помилку, це, швидше за все, одна з цих причин:
TOCOL не підтримується у вашому Excel
При виникненні помилки #NAME? в першу чергу слід перевірити правильність написання імені функції. Якщо ім'я вказано правильно, але помилка не зникає, функція недоступна у вашій версії Excel. У цьому випадку розгляньте можливість використання альтернативи TOCOL.
Масив занадто великий
Помилка #NUM вказує на те, що масив не вміщується в стовпчик. Типовий випадок, коли ви посилаєтесь на цілі стовпчики або рядки.
Не вистачає порожніх клітинок
При виникненні помилки #SPILL перевірте, чи є в стовпці, куди вводиться формула, достатньо порожніх клітинок для заповнення результатами. Якщо клітинки візуально порожні, переконайтеся, що в них немає пробілів та інших недрукованих символів. Для отримання додаткової інформації див. статтю Як виправити помилку #SPILL в Excel.
Ось так можна використовувати функцію СРЗНАЧ в Excel 365 і альтернативні рішення в більш ранніх версіях для перетворення двовимірного масиву в один стовпець. Дякую за прочитання і сподіваюся побачити вас на нашому блозі наступного тижня!
Практичний посібник
Функція TOCOL Excel - приклади формул (файл .xlsx)