连接成对各个表A列和B列的引用
=ROW(1:30)&"日!A:A"
=ROW(1:30)&"日!B:B"
连接成的只是字符串,并不能代表1:30日的A列和B列。把字符串地址转换成真正的引用,这是indirect函数的特长:
=Inidrect(ROW(1:30)&"日!A:A")
=Indirect(ROW(1:30)&"日!B:B")
有地址了,把它套进sumif函数中会怎么样?
=SUMIF(Inidrect(ROW(1:30)&"日!A:A"),A2,Indirect(ROW(1:30)&"日!B:B"))
结果是会把各个表中的A产品销量分别进行求和,查看结果按F9。
最后用sumproduct函数进行求和(这里不用sum的原因是:sum无法直接支持数组运算,本公式中同时对多数组进行运算属数组运算)
最终的公式为:
=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$30)&"日!a:a"),A2,INDIRECT(ROW($1:$30)&"日!b:b")))
由于公式复制后row(1:30)中的行数会发生变化,所以这里必须要添加绝对引用符号$
注:如果是多表多条件求和,可以用sumifs函数,原理相同。