Я предлагаю две версии, в зависимости от того, должны ли быть сохранены пустые ячейки. Основная идея та же:
- Выберите символ, которого нет в вашей таблице (например, экзотический символ Юникода, доступный через
CHAR
).
- Используйте его в
JOIN
команде для каждого из трех столбцов.
- Объедините результаты, добавив символ между ними.
SPLIT
конкатенированная строка с тем же символом.
TRANSPOSE
результат.
Например:
=TRANSPOSE( SPLIT( JOIN(CHAR(57344),A1:A) &CHAR(57344)& JOIN(CHAR(57344),B1:B) &CHAR(57344)& JOIN(CHAR(57344),C1:C), CHAR(57344) ) )
где для объединения / разделения я выбрал символ CHAR(57344)
, который предназначен для частного использования и, следовательно, не должен присутствовать в любых допустимых входных данных.
Приведенная выше формула удаляет пустые записи , потому что это то, что SPLIT
делает. Это может быть удобно, если ваши данные не имеют пробелов: избавляет вас от необходимости отслеживать, где находится последний ряд данных. Но в других случаях заготовки должны быть сохранены.
Чтобы сохранить пробелы, я следую ответу Джейкоба Яна Туинстры, за исключением того, что я использовал другое частное использование Unicode вместо пробела (кто знает, может быть, у вас есть ячейки, которые содержат только пробел, и вы хотите их сохранить). Это включает в себя два дополнительных шага: после присоединения все , как и раньше, я использую , SUBSTITUTE
чтобы заменить CHAR(57344)
на CHAR(57344)&CHAR(57345)
, затем разделить , как и раньше, и заменить CHAR(57345)
пустой строкой.
=TRANSPOSE( ARRAYFORMULA(SUBSTITUTE( SPLIT( SUBSTITUTE(...joins... , CHAR(57344),CHAR(57344)&CHAR(57345)), CHAR(57344) ), CHAR(57345), "")))
Полный результат выглядит следующим образом (обратите внимание, что теперь я указываю, где находится последняя строка данных):
=TRANSPOSE( ARRAYFORMULA(SUBSTITUTE( SPLIT( SUBSTITUTE(JOIN(CHAR(57344),A1:A9) &CHAR(57344)& JOIN(CHAR(57344),B1:B9) &CHAR(57344)& JOIN(CHAR(57344),C1:C9), CHAR(57344),CHAR(57344)&CHAR(57345)), CHAR(57344) ), CHAR(57345), "" )))
Еще одно предупреждение: строки в Google Sheets не могут превышать 50000 символов в длину. Если данные слишком велики для струнного подхода к работе, использовать скрипт ( это один является хорошим местом для начала).