Разделение формулы массива листов Google и диапазон импорта - PullRequest
1 голос
/ 12 марта 2020

Я пытаюсь построить довольно сложную формулу, но пока, без успеха, буду признателен за любую помощь! Сначала в некотором контексте я пытаюсь синхронизировать листы, в которых хранятся ответы из форм Google, с другими листами, чтобы составить сводку, поэтому у меня, например, у 3 листов, синхронизированных с 3 различными формами, есть столбец с именем студенческого кода (он не называется диапазоном, просто значение в первом ряду). затем я создал другой формулой разделенный запятыми список электронных таблиц, релевантных для пользователя (например, я знаю, что ученик 1 выполняет упражнение a b c, поэтому я получаю ссылки всех электронных таблиц в соответствующую ячейку в виде разделенных запятыми Строка) так что я хочу достичь диапазона импорта

  1. из каждой соответствующей таблицы. Я пытаюсь достичь этого с помощью формулы

=Arrayformula(Filter(IMPORTRANGE(SPLIT(AB2, ",", TRUE, TRUE),"'Form responses 1'!A1:Z1000")))

, но безуспешно

получить первую строку из этих таблиц отфильтровать строку, которая содержит код студента (столбец с именем studCode со значением соответствующего кода студента) объединить строки из всех этих поэтому у меня будет строка 1 (строка с текстом вопроса) для теста 1, затем строка с ответами студентов, затем строка с вопросами, чтобы проверить 2 ответа студентов на эти тесты ...

Я был бы очень признателен справка (о, я скорее стремлюсь достичь ее с помощью формулы листов Google, а не с помощью функции сценария приложения - поскольку диапазон импорта намного эффективнее, чем с помощью сценария в приложении службы листов)

Я создал контрольные примеры для чтобы помочь с решением проблемы, в сводной электронной таблице, где я хочу накапливать данные:

https://docs.google.com/spreadsheets/d/1cJn8CX25t98GI9E4aYgsQPNt28w_sX0ynfhwkG3ZKyA/edit?usp=sharing

электронных таблиц, которые имитируют данные, импортированные из форм:

https://docs.google.com/spreadsheets/d/1BgYN7f6ojk7NhOlj2FuSm0goMt_HjqkebWiOJYQmN0E/edit?usp=sharing

https://docs.google.com/spreadsheets/d/19cDQR-tN5_S_rblc-hbavxVF0xforoMaKUQYjuYBN-E/edit?usp=sharing

https://docs.google.com/spreadsheets/d/1QPMcHIH5PXQwWbAULk7vxJ4g-pSXK1qHKhFvLwdRaAU/edit?usp=sharing

1 Ответ

2 голосов
/ 12 марта 2020

try:

={""; ARRAYFORMULA("=QUERY({"&TEXTJOIN(";", 1, "IMPORTRANGE("""&
 TRANSPOSE(SPLIT(B2, ","))&""", ""'Sheet1'!A1:Z1000"")")&
 "}, ""where Col1 is not null"", 0)")}

0

, затем скопируйте сгенерированную формулу и вставьте ее в нужное место:

0


ОБНОВЛЕНИЕ:

={""; ARRAYFORMULA("=FILTER(QUERY({"&TEXTJOIN(";", 1, "IMPORTRANGE("""&
 TRANSPOSE(SPLIT(B2, ","))&""", ""'Sheet1'!A1:Z1000"")")&
 "}, ""where Col1 is not null"", 0), REGEXMATCH(TRANSPOSE(QUERY(TRANSPOSE(QUERY({"&
 TEXTJOIN(";", 1, "IMPORTRANGE("""&
 TRANSPOSE(SPLIT(B2, ","))&""", ""'Sheet1'!A1:Z1000"")")&
 "}, ""where Col1 is not null"", 0)),,99^99)), A2))")}

0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...