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

时间:2011-09-22 01:14:52

标签: spreadsheet gql

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

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

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

“选择学生,COUNT(拘留)GROUP BY学生”

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

3 个答案:

答案 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)")

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

我已经命名了要导入的范围,以使其更适合将来使用。