瞬间搞定⼀⽉数据汇总!这个Excel求和公式太⽜了
前⼏天⼩编推过⼀期跨表公式合集,其中有⼀个是利⽤sum进⾏多表求和
【例】如下图所⽰,需要在汇总表中统计1~30⽇的各个商品销量合计(⽇报表和汇总表格式、位置完全⼀样)
在汇总表B2中输⼊公式:
=sum('*'!b2)
输⼊后会⾃动替换为多表引⽤⽅式
=SUM('1⽇:30⽇ '!B2)
有同学提问:如果各个表中商品的位置(所在⾏数)不⼀样,该怎么求和?兰⾊今天要分享⼀个更强⼤的⽀持⾏数不同的求和公式。
分析及公式设置过程:
如果对单个表(⽐如1⽇)进⾏对A商品进⾏求和,可以直接⽤sumif函数搞定:
1⽇表
在汇总表中设置求和公式:
=SUMIF('1⽇'!A:A,A2,'1⽇'!B:B)
依此类推,如果对30天求和,公式应为:
=SUMIF('1⽇'!A:A,A2,'1⽇'!B:B)+SUMIF('2⽇'!A:A,A2,'2⽇'!B:B)
+.......+SUMIF('30⽇'!A:A,A2,'30⽇'!B:B)
这公式也太长了吧......
细⼼的同学会发现,公式虽然,但还是有规律的:对各个表的求和除了表名外,其他公式部分都相同。
利⽤这个特点,我们可以⽤row函数⾃动⽣成对1~30天的引⽤。
=Row(1:30) 的结果为
{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30}
sumif函数的使用方法绝对引用为证明这⼀点,可以在单元格中输⼊公式后,选中row(1:30)按F9键
连接成对各个表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函数,原理相同。
⼩编说:这是兰⾊第1次对多表求和进⾏这么详细的解释,这种解释公式的形式如果同学们觉得好就点右下⾓【在看】⽀持,以后⼩编会继续⽤这种形式剖析更多excel公式。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。