Я пропоную дві версії, залежно від того, чи слід зберігати порожні комірки. Основна ідея та ж:
- Виберіть персонажа, який не міститься у вашій таблиці (наприклад, екзотичний символ Unicode, доступний через
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 Таблицях не можуть перевищувати 50000 символів. Якщо ваші дані занадто великі для підходу до роботи на основі рядків, використовуйте скрипт ( цей варіант є гарним місцем для початку).