Есть ли способ написать эти запросы, чтобы их не нужно было обновлять каждый раз при добавлении или удалении столбца?
Можно ли использовать именованные диапазоны в запросах для решения этой проблемы?
Да, вы могли бы использовать именованные диапазоны вместо встроенных заголовков столбцов, но основная идея такая же, как и у других ответов на этот вопрос, которые были предложены на аналогичном вопросе на этом сайте: электронную таблицу необходимо настроить для построения динамической строки SQL .
Допустим, что J
и G
соответствует именованным диапазонам Grades
и Class
соответственно.
Следующий подход работает только тогда, когда столбцы находятся между столбцами A и Z
CELL("address",Grades)
вернется "$J:$J"
. Чтобы получить ссылку на столбец, используйте MID(CELL("address",Grades),2,1)
get "J"
. Окончательная формула
= QUERY (B: J, "ВЫБЕРИТЕ AVG (" &
MID (ЯЧЕЙКА ( "адрес", классы), 2,1) &
") ГРУППА ПО "&
MID (ЯЧЕЙКА ( "адрес", класс), 2,1))
Следующий подход работает для всех случаев
COLUMN(Grades)
вернет целое число (число в форме 1,2,3 и т. д.). Чтобы упростить формулу для создания аргумента оператора SQL, я предлагаю заставить SQL использовать ссылки на столбцы в форме COL1, COL2 и т. д. с помощью массива. обозначение ( {B:J}
). Окончательная формула
= QUERY ({B: J}, "ВЫБЕРИТЕ AVG (Col" & COLUMN (Grades) -1 & ") GROUP BY Col" и COLUMN (Class) -1)
Демо-таблица
Ссылки
Использование массивов в Google Sheets - Cправка - Редакторы Документов Google