谷歌电子表格查询功能列ID,而不是列字母

jas*_*son 2 sql google-sheets google-apps-script

好吧……不确定这些是否可以完成。

我在谷歌电子表格中,单元格 A1 = 时间.. 范围是 A1:C4。

我有一个简单的表如下:

time   sit   stand 
1      bob   mike
2      fred  pat
3      chris mike
Run Code Online (Sandbox Code Playgroud)

这是我的查询:

=query($A$1:$C$4,"select A,B,C where C='mike'",0) 
Run Code Online (Sandbox Code Playgroud)

......非常直接。但是,我希望列引用是动态的。所以我需要能够使用标题进行查询。我该怎么做?我已经尝试过以下方法:

=query($A$1:$C$4,"select 'sit ', 'stand' where 'stand' = 'mike' ",0)

=query($A$1:$C$4,"select sit, stand where stand = 'mike' ",0)
Run Code Online (Sandbox Code Playgroud)

并根据此页面的建议: Google 电子表格查询错误 - 列不存在

我还尝试了以下方法:

=query($A$1:$C$4,"select Col2, Col3  where Col3 = 'mike' ",0)

=query($A$1:$C$4,"select Col2, Col3  where (Col3) = 'mike' ",0)

=query($A$1:$C$4,"select (Col2), (Col3)  where (Col3) = 'mike' ",0)

=query($A$1:$C$4,"select 'Col2', 'Col3'  where 'Col3' = 'mike' ",0)
Run Code Online (Sandbox Code Playgroud)

他们都没有工作......有没有人知道如何去做或知道它是否可能?

https://developers.google.com/chart/interactive/docs/querylanguage

此处的示例似乎您可以做到,但这仅适用于应用程序脚本吗?而不是在电子表格功能中?

Ada*_*amL 5

不幸的是,在 QUERY 电子表格函数选择子句中没有通过标题引用列的本机方式。

如果 QUERY 的第一个参数不是显式引用的范围,则可以使用 Colx 表示法。实现此目的的一种方法是将范围括在括号中,并调用 ArrayFormula:

=ArrayFormula(QUERY(($A$1:$C$4),"select Col2, Col3 where Col3 = 'mike'",0))

它相当丑陋,但您可以使用 MATCH 函数来栓入标题引用:

=ArrayFormula(QUERY(($A$1:$C$4),"select Col"&MATCH("sit";$A$1:$C$1;0)&", Col"&MATCH("stand";$A$1:$C$1;0)&" where Col"&MATCH("stand";$A$1:$C$1;0)&" = 'mike'",1))

  • 是的,他们改变了“除了明确引用的范围之外的任何行为”;也就是说,现在生成可以用 Colx 表示法引用的数组变得更加困难。在新(和旧)工作表中有效的一种方法是 `=QUERY(QUERY(A1:C4,"select *"),"select Col1 etc")` (2认同)