Функция Excel TOCOL для преобразования диапазона в один столбец

  • Поделись Этим
Michael Brown

Простой способ преобразования массива или диапазона в столбец с помощью функции TOCOL.

Возможность транспонировать данные из столбцов в строки и в обратном направлении появилась в Excel довольно давно. Но преобразование диапазона ячеек в один столбец было непростой задачей. Теперь ситуация наконец-то меняется. Microsoft представила новую функцию под названием TOCOL, которая может в мгновение ока выполнить преобразование массива в столбец. Ниже приведен список задач, которые эта новая функция может легко решить.

    Функция ТОКОЛ в Excel

    Функция TOCOL в Excel преобразует массив или диапазон ячеек в один столбец.

    Функция принимает три аргумента, но только первый из них является обязательным.

    TOCOL(array, [ignore], [scan_by_column])

    Где:

    Массив (требуется) - массив или диапазон для преобразования в столбец.

    Игнорировать (необязательно) - определяет, игнорировать ли пробелы и/или ошибки. Может быть одним из этих значений:

    • 0 или опущено (по умолчанию) - сохранить все значения
    • 1 - игнорировать пробелы
    • 2 - игнорировать ошибки
    • 3 - игнорировать пробелы и ошибки

    Scan_by_column (необязательно) - определяет, горизонтально или вертикально сканировать массив:

    • FALSE или опущено (по умолчанию) - сканирование массива по строкам слева направо.
    • TRUE - сканирование массива по столбцам сверху вниз.

    Советы:

    • Чтобы преобразовать массив в одну строку, используйте функцию TOROW.
    • Чтобы выполнить обратное преобразование столбца в массив, используйте либо функцию WRAPCOLS для обертывания по столбцам, либо функцию WRAPROWS для обертывания по строкам.
    • Чтобы транспонировать массив из горизонтального в вертикальный или наоборот, т.е. заменить строки на столбцы, используйте функцию TRANSPOSE.

    Наличие ТОКОЛ

    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}

    Результат помещается в ячейку E2, из которой он перетекает в нижележащие ячейки.

    Как использовать функцию ТОКОЛ в Excel - примеры формул

    Чтобы лучше понять возможности функции TOCOL и то, какие задачи она может решать, давайте рассмотрим несколько примеров формул.

    Преобразование массива в столбец с игнорированием пробелов и ошибок

    Как вы могли заметить в предыдущем примере, формула TOCOL по умолчанию сохраняет все значения из исходного массива, включая пустые ячейки и ошибки.

    В результирующем массиве пустые ячейки представлены нулями, что может сбить с толку, особенно если исходный массив имеет 0 значений. Решение заключается в следующем пропускать заготовки Для этого вы устанавливаете 2-й аргумент равным 1:

    =TOCOL(A2:C5, 1)

    На игнорировать ошибки , установите второй аргумент равным 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 UNIQUE может легко найти уникальные значения в одном столбце или строке, а также вернуть уникальные строки, но она не может извлечь уникальные значения из многостолбцового массива. Решением является использование ее вместе с функцией TOCOL.

    Например, чтобы извлечь все различные (отличные) значения из диапазона A2:C7, используется следующая формула:

    = UNIQUE(TOCOL(A2:C7))

    Кроме того, вы можете обернуть приведенную выше формулу в функцию SORT, чтобы расположить возвращаемый массив в алфавитном порядке:

    =SORT(UNIQUE(TOCOL(A2:C7)))

    Как преобразовать диапазон в столбец в Excel 365 - 2010

    В версиях Excel, где функция TOCOL не поддерживается, существует пара альтернативных способов преобразования диапазона ячеек в столбец. Эти решения довольно хитрые, но в любом случае работающие.

    Чтобы прочитать диапазон по строкам:

    ИНДЕКС( ассортимент , QUOTIENT(ROW(A1)-1, COLUMNS( ассортимент ))+1, MOD(ROW(A1)-1, COLUMNS( ассортимент ))+1)

    Чтобы прочитать диапазон по столбцам:

    ИНДЕКС( ассортимент , 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-м аргументом, установленным на FALSE или опущенным:

    =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-м аргументом, установленным в TRUE:

    =TOCOL(A2:C5, ,TRUE)

    В отличие от TOCOL, альтернативные формулы следует вводить в каждую ячейку, в которой вы хотите получить результат. В нашем случае формулы попадают в ячейки E2 (по строке) и G2 (по столбцу), а затем копируются вниз в строку 13.

    Если формулы будут скопированы в большее количество строк, чем нужно, в "лишних" ячейках появится ошибка #REF! Чтобы этого не произошло, вы можете вложить формулы в функцию IFERROR следующим образом:

    =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)

    Идея заключается в том, чтобы использовать функцию INDEX для возврата значения определенной ячейки на основе ее относительных номеров строки и столбца в диапазоне.

    Сайт номер строки рассчитывается с помощью этой комбинации:

    QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1

    QUOTIENT возвращает целочисленную часть деления.

    Для числитель Вы используете ROW(A1)-1, который возвращает порядковый номер от 0 в E2 (первая ячейка, в которую введена формула) до 11 в E13 (последняя ячейка, в которую введена формула).

    Сайт знаменатель brough by COLUMNS($A$2:$C$5)) является постоянной и равна количеству столбцов в вашем диапазоне (в нашем случае 3).

    Теперь, если вы проверите результат QUOTIENT для первых 3 клеток (E2:E4), вы увидите, что он равен 0 (потому что целочисленная часть деления равна нулю). Добавление 1 дает номер строки 1.

    Для следующих 3 ячеек (E5:E5) QUOTIENT возвращает 1, а операция +1 обеспечивает номер строки 2. И так далее.

    Другими словами, эта часть формулы создает повторяющуюся последовательность чисел, например, 1,1,1,1,2,2,2,3,3,3,4,4,4... Каждое число повторяется столько раз, сколько столбцов в вашем диапазоне.

    Для расчета номер столбца , вы строите соответствующую последовательность чисел, используя функцию MOD:

    MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1

    Поскольку в нашем диапазоне (A2:C5) 3 столбца, последовательность должна быть 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.

    И так далее.

    Вторая формула, которая сканирует диапазон по столбцам, работает аналогичным образом. Разница в том, что она использует MOD для получения номера строки и QUOTIENT для получения номера столбца.

    Функция TOCOL не работает

    Если функция TOCOL выдает ошибку, скорее всего, причина одна из этих:

    TOCOL не поддерживается в вашем Excel

    Если вы получаете ошибку #NAME?, в первую очередь необходимо проверить правильность написания имени функции. Если имя правильное, но ошибка сохраняется, функция недоступна в вашей версии Excel. В этом случае рассмотрите возможность использования альтернативы TOCOL.

    Массив слишком большой

    Ошибка #NUM указывает на то, что массив не помещается в столбец. Типичный случай - когда вы ссылаетесь на целые столбцы или строки.

    Недостаточно пустых ячеек

    При возникновении ошибки #SPILL проверьте, достаточно ли в столбце, в который вводится формула, пустых ячеек для заполнения результатами. Если ячейки визуально пустые, убедитесь, что в них нет пробелов и других непечатных символов. Для получения дополнительной информации см. раздел Как исправить ошибку #SPILL в Excel.

    Вот как можно использовать функцию TOCOL в Excel 365 и альтернативные решения в более ранних версиях для преобразования двумерного массива в один столбец. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

    Практическая тетрадь

    Функция ТОКОЛ в Excel - примеры формул (файл .xlsx)

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.