query函数不允许使用列名;如果引用单元格范围,则必须使用字母;如果引用数组,则必须使用ColN。这是非常烦人的,尤其是当你修改被查询的表来添加、删除或交换列时。
我想使用列名,就像在标准SQL查询中一样。
发布于 2017-08-03 17:52:59
一种解决方案可能是通过脚本创建一些自定义函数,但是当你有一个不是很小的表时,你肯定会因为计算时间过长而导致一些错误。
我发现的最有效的解决方案(只使用本机函数)如下所示。
假设您正在处理一个工作表范围,您的列名在第1行,并且您希望引用列"salary";您可以通过以下方式获取列字母
substitute(address(1,match("salary",A1:1,0),4),"1","")相反,如果要查询数组,则会更简单;您需要的字符串是
"Col"&match("salary",A1:1,0)最终的查询可能不是那么优雅,但效率是有保证的:
query(
employeessheet!A:E,
"select "&substitute(address(1,match("salary",employeessheet!A1:1,0),4),"1","")&" where ...",
1)发布于 2021-10-16 08:30:25
实际上,您可以通过拆分查询公式并使用其他公式从列表中自动获取所需的列名来解决此问题。
例如,如果您在range A1:E15中有一个标题为"H1,H2,H3,H4,H5“的表,而您只想获取列H3和H5:
G1:G2MATCH公式和TextJoin公式生成类似Col3, Col5的连接字符串=TextJoin(",",TRUE,ArrayFormula(IFERROR("Col"&MATCH(G1:G6,$A$1:$E$1,0),“”))
- Lets say this was in cell `H1`Query公式中引用此单元格,如下所示=查询({a1:e20},"SELECT "&H1&“WHERE Col2='w'")
你可以在下面的截图中看到它的实际效果:

https://stackoverflow.com/questions/45480750
复制相似问题