如何结合ArrayFormula与SUMIF实现Google表格动态自动求和
解决方案
你可以使用以下公式实现需求,只需输入一次即可自动对A列非空行计算对应行中第2行表头为TOTAL的列的总和,且适配行/列的增减:
=ArrayFormula(IF(A3:A<>"",SUMIF($2:$2,"TOTAL",INDEX(A3:Z,ROW(A3:A)-ROW(A3)+1,)),""))
公式说明:
IF(A3:A<>"", ..., ""):仅对A列非空的行执行计算,空行返回空值INDEX(A3:Z, ROW(A3:A)-ROW(A3)+1,):动态获取当前行的所有列数据(ROW(A3:A)-ROW(A3)+1会生成从1开始的序列,对应A3:A每行的相对行号,从而让INDEX定位到每行的完整数据范围)SUMIF($2:$2,"TOTAL", ...):对第2行中值为TOTAL的列,求和对应行的数值
为什么你之前的公式失效?
第一个公式:
=ArrayFormula(if(A2:A243<>"",sumif($2:$2,"TOTAL",3:3),""))
这里的3:3是固定的第3行范围,不会随数组迭代到下一行,所以所有行都返回第3行的计算结果。第二个公式:
=ArrayFormula(if(A2:A243<>"",sumif($2:$2,"TOTAL",indirect(""&row()&":"&row())),""))row()在ArrayFormula中只会返回公式所在行的行号,无法自动迭代生成每行的行号,导致所有行都使用公式所在行的数据计算。第三个公式:
=ArrayFormula(sumif($2:$2,"TOTAL",3:243))SUMIF会将3:243整个范围作为单一数据源,返回的是所有行中符合条件的列的总和,而非每行单独的求和结果。
内容的提问来源于stack exchange,提问作者Mario Sze
相关产品推荐
相关产品推荐

