Google Sheets中ArrayFormula+Query仅首行生效,求解决方案
解决Google Sheets中ARRAYFORMULA结合QUERY仅第一行生效的问题
问题原因
你的公式仅在第一行生效,是因为Query语句里的O ="&O10&" AND N ="&N10&"是固定引用单个单元格(O10、N10),ARRAYFORMULA无法让Query自动遍历每一行的O、N列值,只会执行一次查询并返回第一行结果。
解决方案
方法1:用SUMIFS替代QUERY(推荐,更简洁高效)
直接使用SUMIFS配合ARRAYFORMULA,原生支持数组遍历:
=ARRAYFORMULA(IF(O10:O="",,SUMIFS(DatenTime!L:L, DatenTime!O:O, O10:O, DatenTime!N:N, N10:N)))
IF(O10:O="",, ...):避免空行生成无效结果SUMIFS:按DatenTime!O:O=当前行O值和DatenTime!N:N=当前行N值的条件,对DatenTime!L:L求和ARRAYFORMULA:自动将公式应用到O10以下的所有行
方法2:用BYROW+QUERY实现数组迭代(保留QUERY的场景)
如果必须使用QUERY,可通过BYROW遍历每行的O、N值,逐个执行查询:
=BYROW(O10:O&"|"&N10:N, LAMBDA(x, IF(x="|",,QUERY(DatenTime!A2:O, "SELECT sum(L) WHERE O='"&INDEX(SPLIT(x,"|"),1)&"' AND N='"&INDEX(SPLIT(x,"|"),2)&"' LABEL sum(L) ''"))))
- 注意:如果O、N列是数字类型,需去掉条件中的单引号(
'),否则会报错;如果是文本类型则保留。
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

