新手问题,在Google电子表格中使用Google查询语言时,是否可以按名称而不是字母选择列?
这对我来说很好:“选择A,COUNT(B)GROUP BY A”
如果我可以在第一行使用列标题,更像是数据库,那就太棒了,如下所示:
“选择学生,COUNT(拘留)GROUP BY学生”
我怀疑这是不可能的,但希望这是我的互联网搜索技能失败的另一个案例。
答案 0 :(得分:5)
目前无法做到这一点。 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
答案 1 :(得分:0)
更简单一点:
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,"")
答案 2 :(得分:0)
我发现,当您在外部范围上使用IMPORTRANGE
函数时,它会从字母转换为列号,并且将在此问题上为您提供帮助。
我想根据其字段名称选择一列,但是对我来说,问题在于将来要查看的列可能会更改。所以我所做的就是使用MATCH
函数来标识列,所以看起来像
=QUERY(IMPORTRANGE("spreadsheet url","NamedRange"),"SELECT Col"&MATCH("FieldName",FieldNameRowAddress/RangeName,FALSE)")
有趣的是,您必须允许自己访问权限。
我已经命名了要导入的范围,以使其更适合将来使用。