Я связал Google Sheet с формой, которая собирает ответы от трех разных людей на одну и ту же тему, используя одну и ту же форму и редактируя ее три раза. Это создает лист, который содержит три столбца, в которых указано, где находятся три человека.
Мне нужно создать представление / запрос, который берет эти три столбца и помещает их «друг под другом», а не рядом друг с другом. В базе данных я бы сделал что-то вроде запроса ниже, я назвал свой «лист» tblMain и указал соответствующие четыре столбца (мне также нужен идентификатор субъекта).
tblMain:
ID RALocation RBLocation RCLocation
Запрос:
Select ID, RALocation as Location, 'RA' as Role from tblMain
Union
Select ID, RBLocation as Location, 'RB' as Role from tblMain
Union
Select ID, RCLocation as Location, 'RC' as Role from tblMain
Кто-нибудь знает, есть ли способ сделать это в Google Sheets? Я не против построить более одного листа и затем объединить их в конце, но я немного застрял в том, как это сделать.
Ответы:
Я предлагаю две версии, в зависимости от того, должны ли быть сохранены пустые ячейки. Основная идея та же:
CHAR
).JOIN
команде для каждого из трех столбцов.SPLIT
конкатенированная строка с тем же символом.TRANSPOSE
результат.Например:
где для объединения / разделения я выбрал символ
CHAR(57344)
, который предназначен для частного использования и, следовательно, не должен присутствовать в любых допустимых входных данных.Приведенная выше формула удаляет пустые записи , потому что это то, что
SPLIT
делает. Это может быть удобно, если ваши данные не имеют пробелов: избавляет вас от необходимости отслеживать, где находится последний ряд данных. Но в других случаях заготовки должны быть сохранены.Чтобы сохранить пробелы, я следую ответу Джейкоба Яна Туинстры, за исключением того, что я использовал другое частное использование Unicode вместо пробела (кто знает, может быть, у вас есть ячейки, которые содержат только пробел, и вы хотите их сохранить). Это включает в себя два дополнительных шага: после присоединения все , как и раньше, я использую ,
SUBSTITUTE
чтобы заменитьCHAR(57344)
наCHAR(57344)&CHAR(57345)
, затем разделить , как и раньше, и заменитьCHAR(57345)
пустой строкой.Полный результат выглядит следующим образом (обратите внимание, что теперь я указываю, где находится последняя строка данных):
Еще одно предупреждение: строки в Google Sheets не могут превышать 50000 символов в длину. Если данные слишком велики для струнного подхода к работе, использовать скрипт ( это один является хорошим местом для начала).
источник
В наше время очень легко создать объединение в Google Spreadsheet с помощью этой формулы:
См. Дополнительную информацию в Справке по Документам Google: Использование массивов в Google Sheets.
источник
Короткий ответ
Google Sheets - очень мощный инструмент, имеющий несколько альтернатив для достижения результата, аналогичного UNION-SELECT.
альтернативы
Встроенные массивы
Альтернативой использованию способа SPLIT-TRANSPOSE-JOIN-CHAR является использование встроенных массивов. Одним из преимуществ этого метода является то, что он не требует создания / деконструкции строк, поэтому ограничение количества символов не имеет значения.
фильтрация
Вышеприведенное можно использовать в сочетании с FILTER () для тех случаев, когда для фильтрации требуется аналогичное поведение UNION-SELECT. пример
Также может использоваться в сочетании с QUERY (), но его результаты включают строку заголовков. Чтобы узнать, как избавиться от заголовков, см. Раздел Избавиться от строки в результате запроса Google Spreadsheets .
Как создать столбец значений
Используйте TRANSPOSE-SPLIT-REPT, чтобы создать столбец значений.
Также QUERY () можно использовать для создания столбца значений, но удаление строки заголовков может усложнить формулу. Используйте его, только если ограничения длины строки вызывают проблемы.
Решение с использованием встроенных массивов и TRANSPOSE-SPLIT-REPT
Предположим, что диапазон tblMain равен A1: D7, где A1: D1 - заголовки таблицы, а данные - в A2: D7.
Ссылки
Добавление массивов электронных таблиц Google - StackOverflow
источник