使用 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 App 脚本中的查询字符串
Google 表格 - Arrayformula 查询拆分调试
如何查询函数 Google 电子表格 - 基于多个条件的数据过滤(一次检查多个列)