Оглавление
Быстрый способ превратить диапазон ячеек в одну строку с помощью функции TOROW функция.
В Microsoft Excel 365 появилось несколько новых функций для выполнения различных манипуляций с массивами. С помощью TOROW можно быстро выполнять преобразования из диапазона в ряд. Вот список задач, которые может решить эта новая функция:
Функция ТОРОУ в Excel
Функция TOROW в Excel используется для преобразования массива или диапазона ячеек в одну строку.
Функция принимает в общей сложности три аргумента, из которых обязательным является только первый.
TOROW(array, [ignore], [scan_by_column])Где:
Массив (требуется) - массив или диапазон для преобразования в одну строку.
Игнорировать (необязательный) - определяет, игнорировать ли пробелы и/или ошибки. Может принимать одно из этих значений:
- 0 или опущено (по умолчанию) - сохранить все значения
- 1 - игнорировать пробелы
- 2 - игнорировать ошибки
- 3 - игнорировать пробелы и ошибки
Scan_by_column (необязательно) - определяет способ сканирования массива:
- FALSE или опущено (по умолчанию) - сканирование массива по горизонтали по строкам.
- TRUE - сканирование массива по вертикали по столбцам.
Советы:
- Чтобы преобразовать массив в один столбец, используйте функцию TOCOL.
- Чтобы выполнить обратное преобразование строки в массив, используйте либо функцию WRAPCOLS для обертывания в столбцы, либо функцию WRAPROWS для обертывания массива в строки.
- Чтобы превратить строки в столбцы, используйте функцию TRANSPOSE.
наличие тороса
TOROW - это новая функция, которая поддерживается только в Excel для Microsoft 365 (для Windows и Mac) и Excel для веб.
Основная формула TOROW в Excel
Чтобы выполнить простое преобразование диапазона в строку, используйте формулу TOROW в ее базовой форме. Для этого вам нужно определить только первый аргумент ( массив ).
Например, чтобы превратить двумерный массив, состоящий из 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}
Результат попадает в ячейку A10, из которой он переливается в соседнюю ячейку справа.
Преобразовать диапазон в строку, игнорируя пробелы и ошибки
По умолчанию функция TOROW сохраняет все значения из исходного массива, включая пустые ячейки и ошибки. В выводе на месте пустых ячеек появляются нулевые значения, что может сбить с толку.
На исключить заготовки , установите игнорировать аргумент к 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)
Укладывайте массивы вертикально и преобразуйте по строкам
Чтобы добавить каждый последующий массив к нижней части предыдущего массива и прочитать объединенный массив по горизонтали, формула в E12 имеет вид:
=TOROW(VSTACK(A3:C4, A8:C9))
Укладывайте массивы вертикально и преобразуйте по столбцам
Чтобы добавить каждый последующий массив в нижнюю часть предыдущего и просканировать объединенный массив по вертикали, формула выглядит следующим образом:
=TOROW(VSTACK(A3:C4, A8:C9), ,TRUE)
Чтобы лучше понять логику, обратите внимание на различный порядок значений в результирующих массивах:
Извлечение уникальных значений из диапазона в строку
Начиная с Microsoft Excel 2016, у нас есть замечательная функция UNIQUE, которая позволяет легко получать уникальные значения из одного столбца или строки. Однако она не может работать с массивами из нескольких столбцов. Чтобы преодолеть это ограничение, используйте функции UNIQUE и TOROW вместе.
Например, чтобы извлечь все различные (отличные) значения из диапазона A2:C7 и поместить результаты в одну строку, используется следующая формула:
=UNIQUE(TOROW(A2:C7), TRUE)
Поскольку TOROW возвращает одномерный горизонтальный массив, мы устанавливаем 2-е ( by_col ) аргумента UNIQUE в TRUE для сравнения столбцов друг с другом.
Если вы хотите, чтобы результаты были расположены в алфавитном порядке, оберните приведенную выше формулу в функцию SORT:
=SORT(UNIQUE(TOROW(A2:C7), TRUE), , ,TRUE )
Как и в случае с UNIQUE, параметр by_col аргумент SORT также устанавливается в TRUE.
Альтернатива TOROW для Excel 365 - 2010
В версиях Excel, где функция TOROW недоступна, вы можете преобразовать диапазон в одну строку с помощью комбинации нескольких различных функций, которые работают в старых версиях. Эти решения более сложные, но они работают.
Для сканирования диапазона по горизонтали общая формула такова:
ИНДЕКС( ассортимент , QUOTIENT(COLUMN (A1)-1, COLUMNS( ассортимент ))+1, MOD(COLUMN(A1)-1, COLUMNS( ассортимент ))+1)Для сканирования диапазона по вертикали общая формула такова:
ИНДЕКС( ассортимент , MOD(COLUMN(A1)-1, COLUMNS( ассортимент ))+1, QUOTIENT(COLUMN (A1)-1, COLUMNS( ассортимент ))+1)Для нашего набора данных в A3:C5 формулы имеют следующий вид:
Чтобы просканировать диапазон по строкам:
=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)
Эта формула является альтернативой функции TOROW с 3-м аргументом, установленным на FALSE или опущенным:
=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)
Эта формула эквивалентна функции TOROW с 3-м аргументом, установленным в TRUE:
=TOROW(A3:C5, ,TRUE)
Обратите внимание, что в отличие от функции динамического массива TOROW, эти традиционные формулы должны быть введены в каждую ячейку, где вы хотите получить результат. В нашем случае первая формула (по строке) попадает в E3 и копируется через M3. Вторая формула (по столбцу) попадает в E8 и перетаскивается через M8.
Чтобы формулы копировались правильно, мы фиксируем диапазон, используя абсолютные ссылки ($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)
В основе формулы лежит функция INDEX, с помощью которой мы получаем значение ячейки на основе ее относительного положения в диапазоне.
Сайт номер строки рассчитывается по этой формуле:
QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1
Идея заключается в том, чтобы создать повторяющуюся последовательность чисел, например, 1,1,1,1,2,2,2,3,3,3, ..., где каждое число повторяется столько раз, сколько столбцов в исходном диапазоне. И вот как мы это делаем:
QUOTIENT возвращает целочисленную часть деления.
Для числитель , мы используем COLUMN(A1)-1, который возвращает порядковый номер от 0 в первой ячейке, где введена формула, до n (общее количество значений в диапазоне минус 1) в последней ячейке, в которую была введена формула. В данном примере в E2 у нас 0, а в M3 - 8.
Для знаменатель Мы используем COLUMNS($A$3:$C$5)). Это возвращает постоянное число, равное количеству столбцов в вашем диапазоне (3 в нашем случае).
В результате функция QUOTIENT возвращает 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.
И так далее.
Вторая формула, которая сканирует диапазон по столбцам, работает аналогичным образом. Разница в том, что мы используем MOD для вычисления номера строки и QUOTIENT для вычисления номера столбца.
Функция TOROW не работает
Если функция TOROW приводит к ошибке, скорее всего, это одна из этих причин:
#NAME? ошибка
Для большинства функций Excel ошибка #NAME? является явным признаком того, что имя функции написано неправильно. В случае с TOROW это также может означать, что функция недоступна в вашем Excel. Если ваша версия Excel отлична от 365, попробуйте использовать альтернативу TOROW.
#NUM ошибка
Ошибка #NUM указывает на то, что возвращаемый массив не помещается в строку. Чаще всего это происходит, когда вы ссылаетесь на целые столбцы и/или строки, а не на меньший диапазон.
ошибка #SPILL
В большинстве случаев ошибка #SPILL говорит о том, что в строке, где вы ввели формулу, недостаточно пустых ячеек, чтобы перелить результаты в них. Если соседние ячейки визуально пустые, убедитесь, что в них нет пробелов или других непечатных символов. Для получения дополнительной информации смотрите раздел Что означает ошибка #SPILL в Excel.
Вот как вы используете функцию TOROW в Excel для преобразования двумерного массива или диапазона в одну строку. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Рабочая тетрадь для тренировок для скачивания
Функция Excel TOROW - примеры формул (файл.xlsx)