有没有一种方法可以编写这些查询,这样就不必在每次添加或删除列时都进行更新?
是否可以在查询中使用命名范围来解决此问题?
是的,您可以使用命名范围而不是内置的列标题,但是基本思想与对此的其他答案相同,并且在本网站中建议使用其他类似问题:电子表格应设置为构建动态SQL字符串。
让说,J
和G
对应于指定范围Grades
和Class
分别。
仅当列在A和Z列之间时,以下方法才有效
CELL("address",Grades)
会回来的"$J:$J"
。要获取列引用,请使用MID(CELL("address",Grades),2,1)
get "J"
。最终公式是
= QUERY(B:J,“ SELECT AVG(”&
MID(CELL(“ address”,Grades),2,1)&
“) 通过...分组 ”&
MID(CELL(“ address”,Class),2,1))
以下方法适用于所有情况
COLUMN(Grades)
将返回一个整数(格式为1,2,3等的数字)。为了简化公式以创建SQL语句参数,我建议通过使用数组来强制SQL使用COL1,COL2等格式的列引用。记号({B:J}
)。最终公式是
= QUERY({B:J},“ SELECT AVG(Col”&COLUMN(Grades)-1&“)GROUP BY Col”&COLUMN(Class)-1)
演示电子表格
参考文献
在Google表格中使用数组-Google文档编辑器帮助