使用 Google 电子表格在 Google 查询语言 (GQL) 中按名称而不是字母选择列?

Posted

技术标签:

【中文标题】使用 Google 电子表格在 Google 查询语言 (GQL) 中按名称而不是字母选择列?【英文标题】:Select columns by name rather than letter in Google Query Language (GQL) with Google Spreadsheets? 【发布时间】:2011-11-22 10:27:21 【问题描述】:

新手问题,在使用 Google 查询语言和 Google 电子表格时,是否可以按名称而不是字母选择列?

这对我来说很好用:“SELECT A, COUNT(B) GROUP BY A”

如果我可以在第一行使用列标题就更好了,更像是一个数据库,如下所示:

“SELECT student, COUNT(detention) GROUP BY student”

我怀疑这是不可能的,但希望这又是一个我的互联网搜索技能失败的案例。

【问题讨论】:

【参考方案1】:

我发现当您在外部范围上使用 IMPORTRANGE 函数时,它会从字母转换为列号,并且会在这件事上为您提供帮助。

我想根据其字段名称选择一列,但对我来说,问题是要查看的列将来可能会发生变化。所以我所做的是使用MATCH 函数来识别列,所以它看起来像

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

有趣的是你必须允许访问自己的权限。

我已经命名了我要导入的范围,以使其更具未来性。

【讨论】:

【参考方案2】:

简单一点:

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,"")
Example in Google Sheets Detailed explanation

【讨论】:

【参考方案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

【讨论】:

以上是关于使用 Google 电子表格在 Google 查询语言 (GQL) 中按名称而不是字母选择列?的主要内容,如果未能解决你的问题,请参考以下文章

将Google电子表格导入Google电子表格

如何将数组传递到 Google 电子表格的 Google App 脚本中的查询字符串

Google 表格 - Arrayformula 查询拆分调试

如何查询函数 Google 电子表格 - 基于多个条件的数据过滤(一次检查多个列)

使用来自 bigquery 的数据自动更新 google 电子表格

是否可以为 appengine 数据存储实体获取 Google 电子表格的数据源 URL?