Question to say "I can!"

用SUMIF和SUMPRODUCT一起对多表进行单条件数据汇总

2014-10-21

文章来自李则见的微信,喜欢excel的好学者,可以用微信关注李则见:excelpptpx。

SUMIF和SUMPRODUCT在统计当中,可是能帮大忙的。

内容如下:

1,现在有7个工作表,每个表的数据结构是一样的,都有5列,分别是:商品、日期、件、单价、营业额;每个表的商品的个数不同,行数也不同。比如其中一个工作表的截图是这样的:

2,如果你只想统计工作表“1”里的每个商品的营业额,你只需要整理出各个商品的列表,然后用SUMIF函数就可以求出来了。

=SUMIF('1'!A:A,$A2,'1'!E:E)

3,但是这样统计出来的只是工作表“1”里的数据,工作表“2”到“7”里的数据没有统计出来。一般来说大家可能想到先用SUMIF分别把7个表里的数据分别汇总出来,然后把这7个SUMIF相加在一起,这样做本身是没错,但是如果工作表不止7个,有20个呢,或者50个呢,这时候如果把那么多SUMIF相加也不是件快乐的事情。大部分人是这么做的:

=SUMIF('1'!A:A,$A2,'1'!E:E)+SUMIF('2'!A:A,$A2,'2'!E:E)+...+SUMIF('7'!A:A,$A2,'7'!E:E)

4,上面这种多个SUMIF相加的方法其实可以用一种新的思路去替代。当然这种思路,你不喜欢,你还可以沿用上面的那种多个SUMIF相加的方法。新方法引进INDIRECT函数。如果有7个工作表的数据相加求和,那么可以把原先的SUMIF函数改造成这样:

=SUMIF(INDIRECT(ROW($1:$7)&"!A:A"),

$A2,INDIRECT(ROW($1:$7)&"!e:e"))

其中,ROW($1:$7)代表工作表“1”到“7”的表名。而ROW($1:$7)&"!A:A",就代表工作表“1”到“7”里的A列这个区域。但是这种关于单元格区域引用的表达方式,不是标准的规范的引用方式,是不被Excel所认可的。要想这种非常规的引用形式被Excel认可,就必须用INDIRECT函数包装下。所以SUMIF函数的第一个参数“条件区域”这里用到了INDIRECT函数:INDIRECT(ROW($1:$7)&"!A:A")。

同理,SUMIF函数的第二个参数求和区域这里也用到了INDIRECT函数进行包装处理。

5,比如你在B2单元格输入上述SUMIF函数公式,回车确认后的结果显示的结果却并不是你想要的多表求和的结果。其实结果已经汇总出来的了,你只需要在B2单元格的编辑栏,按F9键就可以看到下面这样的结果值:{15516;53805;16726;20102;19780;17635;34104}。这里面有7个值,分别对应7个表的某个商品的求和。但是这7个值怎么求出他们的总和呢。这时候就可以用SUMPRODUCT函数对这里面的7个值求其总和。

在编辑栏按F9出现如下结果(只是查看一下,然后不要回车,直接按ESC返回到原来的函数公式)

所以,最终的函数公式是:

你看明白了吗。动手操作,才是王道~~~



作者:admin | Categories:技术人生 | Tags:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

无觅相关文章插件,快速提升流量