Выберите столбцы по имени, а не по букве в Google Query Language (GQL) с помощью электронных таблиц Google?

вопрос новичка, можно ли выбирать столбцы по имени, а не по букве при использовании языка запросов Google с электронными таблицами Google?

Это отлично работает для меня: "выберите A, COUNT (B) GROUP BY A"

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

"выберите студента, подсчет (задержание) группы по студенту"

Я подозреваю, что это невозможно, но надеюсь, что это еще один случай, когда мой интернет поисковые навыки подвели меня.

3 ответов


в настоящее время не представляется возможным. В документации GQL указано[1] " на столбцы ссылаются идентификаторы (а не метки). Например, в электронной таблице Google идентификаторами столбцов являются одна или две символьные буквы столбцов (A, B, C,...)."

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

=REGEXEXTRACT(ADDRESS(1,COUNTA(SPLIT(LEFT(JOIN(",",TRANSPOSE(1:1)),FIND("your_column_name",JOIN(",",TRANSPOSE(1:1)))),","))+1,4);"[a-zA-Z]+")

[1] https://developers.google.com/chart/interactive/docs/querylanguage#Select


немного проще:

SELECT "&SUBSTITUTE(ADDRESS(1,MATCH("student",Sheet1!A1:B1,0),4),1,"")&", COUNT("&SUBSTITUTE(ADDRESS(1,MATCH("detention",Sheet1!A1:B1,0),4),1,"")&") GROUP BY "&SUBSTITUTE(ADDRESS(1,MATCH("student",Sheet1!A1:B1,0),4),1,"")

я обнаружил, что, когда вы используете IMPORTRANGE функция на внешних диапазонах преобразуется из Буквы в номер столбца и поможет вам в этом вопросе.

Я хотел выбрать столбец на основе его имени поля, но проблема для меня заключалась в том, что столбец для просмотра, вероятно, изменится в будущем. Поэтому я использовал MATCH функция для идентификации столбца, поэтому она выглядит примерно как

=QUERY(IMPORTRANGE("spreadsheet url","NamedRange"),"SELECT Col"&MATCH("FieldName",FieldNameRowAddress/RangeName,FALSE)")

самое смешное, что вы должны позволить разрешение на доступ к себе.

я назвал свои диапазоны, которые я импортирую, чтобы сделать его еще более будущим доказательством.