首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Google Sheet查询中明确使用列名

问如何在Google Sheet查询中明确使用列名
EN

Stack Overflow用户
提问于 2017-08-03 17:52:59
回答 2查看 2K关注 0票数 1

query函数不允许使用列名;如果引用单元格范围,则必须使用字母;如果引用数组,则必须使用ColN。这是非常烦人的,尤其是当你修改被查询的表来添加、删除或交换列时。

我想使用列名,就像在标准SQL查询中一样。

EN

回答 2

Stack Overflow用户

发布于 2017-08-03 17:52:59

一种解决方案可能是通过脚本创建一些自定义函数,但是当你有一个不是很小的表时,你肯定会因为计算时间过长而导致一些错误。

我发现的最有效的解决方案(只使用本机函数)如下所示。

假设您正在处理一个工作表范围,您的列名在第1行,并且您希望引用列"salary";您可以通过以下方式获取列字母

代码语言:javascript
复制
substitute(address(1,match("salary",A1:1,0),4),"1","")

相反,如果要查询数组,则会更简单;您需要的字符串是

代码语言:javascript
复制
"Col"&match("salary",A1:1,0)

最终的查询可能不是那么优雅,但效率是有保证的:

代码语言:javascript
复制
query(
  employeessheet!A:E,
  "select "&substitute(address(1,match("salary",employeessheet!A1:1,0),4),"1","")&" where ...",
  1)
票数 0
EN

Stack Overflow用户

发布于 2021-10-16 08:30:25

实际上,您可以通过拆分查询公式并使用其他公式从列表中自动获取所需的列名来解决此问题。

例如,如果您在range A1:E15中有一个标题为"H1,H2,H3,H4,H5“的表,而您只想获取列H3和H5:

  1. 将所需的标头(H3和H5)以列表形式存储在另一个表/范围中-假设此范围为G1:G2

  1. 使用MATCH公式和TextJoin公式生成类似Col3, Col5的连接字符串

=TextJoin(",",TRUE,ArrayFormula(IFERROR("Col"&MATCH(G1:G6,$A$1:$E$1,0),“”))

代码语言:javascript
复制
- Lets say this was in cell `H1`

  1. 您可以在Query公式中引用此单元格,如下所示

=查询({a1:e20},"SELECT "&H1&“WHERE Col2='w'")

你可以在下面的截图中看到它的实际效果:

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45480750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档