Используя таблицы Google, вы можете писать запросы . Однако если в кавычках есть буквы столбцов, они не обновляются при изменении порядка столбцов.
Есть ли способ написать эти запросы, чтобы их не нужно было обновлять каждый раз при добавлении или удалении столбца?
Можно ли использовать именованные диапазоны в запросах для решения этой проблемы?
Вот пример: если вы добавите столбец после «F», то столбец «G» будет переведен в «H», и значение формулы изменится.
= Запрос (B: J, «выбрать группу avg (J) по G»)
Смежные вопросы
Этот вопрос отличается от использования запроса с заголовками столбцов вместо букв столбцов, поскольку этот вопрос ориентирован на использование именованных диапазонов.
Да, вы могли бы использовать именованные диапазоны вместо встроенных заголовков столбцов, но основная идея такая же, как и у других ответов на этот вопрос, которые были предложены на аналогичном вопросе на этом сайте: электронную таблицу необходимо настроить для построения динамической строки SQL .
Допустим, что
J
иG
соответствует именованным диапазонамGrades
иClass
соответственно.Следующий подход работает только тогда, когда столбцы находятся между столбцами A и Z
CELL("address",Grades)
вернется"$J:$J"
. Чтобы получить ссылку на столбец, используйтеMID(CELL("address",Grades),2,1)
get"J"
. Окончательная формулаСледующий подход работает для всех случаев
COLUMN(Grades)
вернет целое число (число в форме 1,2,3 и т. д.). Чтобы упростить формулу для создания аргумента оператора SQL, я предлагаю заставить SQL использовать ссылки на столбцы в форме COL1, COL2 и т. д. с помощью массива. обозначение ({B:J}
). Окончательная формулаДемо-таблица
Ссылки
Использование массивов в Google Sheets - Cправка - Редакторы Документов Google
источник
Ответ Рубена не решает проблему для всех случаев, потому что
MID(CELL("address",Grades),2,1)
терпит неудачу, еслиGrades
диапазон перемещается в двухбуквенный столбец, как$AA:$AA
.В этом случае формула
MID(CELL("address",Grades),2,2)
необходима. Для именованных диапазонов, которые охватывают или упираются в$Z:$AA
диапазон, эта формула становится проблематичной.Формула
REGEXEXTRACT( CELL("address", Grades), "\$([a-zA-Z]+)\$")
решает проблему для общего случая, но я сильно подвергаю сомнению его эффективность использования ЦП при использовании всей большой таблицы.источник
Я наткнулся на эту страницу на infoinspired.com, которая объясняет один из способов сделать это. Я проверил это точно так же, как в примере, который он дал, и это сработало. Настройка:
Его объяснение F1: формула ADDRESS, которая включает функции ROW и COLUMN, возвращает адрес ячейки B1. Функция LEFT извлекает из нее первую букву, которая является заголовком столбца.
--- Нажмите на ячейку F1 и перейдите в меню «Данные»> «Именованные диапазоны» и назовите диапазон «Возраст» (без кавычек).
Теперь вы можете сформулировать свой запрос как:
=QUERY(A:B,"Select "&Age)
На его странице есть более сложные примеры, которые я сейчас собираюсь протестировать, но я рад, что первый пример сработал!
Изменить - извините, если это именно то, что другие предлагали с их ответами. Я только нашел этот пример кристально чистым и смог понять это. Думаю, это может помочь другим с тем же вопросом.
источник