分享

这道Excel题80%的同学求出来都是错误的 !

 Excel办公实战 2021-06-29

这道题的需求非常的简单且常见,那就是按月求和。

下面是一份系统导出的数据,现在让我们统计一下 4月和5月的销售金额

怎么样?是不是基本都会,蠢蠢欲动了吧!我测试大部分同学会用一下方法处理!

小白1号 | 这道题我会!SUMIF搞定!

于是你根据自己的理解加上神一般的猜测,写下了如下伟大的公式:

▼友情提醒:公式错误,甚至你都无法正常回车

=SUMIF(MONTH($A$2:$A$21),H2,$F$2:$F$21)

回车后,Excel直接扔个你一个大大的弹窗,【此公式有问题】,你找了半天也没发现问题在哪? 

其实很正常,处在模仿期的时候,我们只是单独的模仿,没有考虑参数的实际规则,比如SUMIF,输入后提示很明显写着range,也就是必须是单元格引用类型!

现在你明白为什么了吧!你MONTH(区域)结果是一个数组 ,SUMIF压根无法识别,不符合人家的游戏规则,不跟你玩了,直接都不让你正常录入了!

小白2号 |  精通SUMIF,这题我会!

结果小白1号的尝试,2号聪明了很多,既然不能使用MONTH直接作为SUMIF参数,那我就添加一列辅助列吧!

=MONTH(A2)

然后问题就简单了

=SUMIF(G:G,I2,F:F)

毫无疑问,公式应该没有问题,基本天天用的东西,但是不好意思,结果竟然是0,小白2号,不禁的问自己,我错哪了??比被女友问的还疑惑!

很不幸,虽然小白2号精通SUMIF,但是依据失败了!至于原因,会慢慢浮出水面!

这里我们再补充一点信息

由于这些数据是跟模板使用的,也就是每次从系统导出粘贴到其中,每次的行数不确定,所以使用辅助列并不是很适合,用户每次粘贴后,并不会去下来公式,这样很可能就会导致数据缺失!

知识要点:

1、上面的公式没有问题,之所以结果报错,是因为金额列的格式是文本型,SUMIF无法对文本型数值求和!

2、Excel中文本默认靠左数值默认靠右。 所以如果你基础扎实,有一定的经验,那么首先就会发现我们的数据有问题,包括第一列的日期都是靠右的,
也就是说,他们都是文本格式



这点不奇怪,其实现在很多从系统中导出的数据都是文本格式的,所以但凡从系统中导出的数据,一定要注意一下格式!

学习了上面的知识,小白三号正式上线!


小白3号 | 冲路不通,我换条路 


既然SUMIF不行,那么条件求和函数还有哪些呢?最常用的就是SUMPRODUCT,而且其中会经过相乘的计算,那么正好可以处理这个问题!

=SUMPRODUCT((MONTH($A$2:$A$21)=H2)*($F$2:$F$21))

OK,小白3号经过上面两位的总结,使用SUMPRODUCT终于成功了!但是SUMPRODUCT有一个严重的性能问题,因为都是数组计算,数据量稍微一大,就卡的不行,相对于SUMIF,他是慢函数。数据量大的情况下,不到万不得已,请谨慎使用!但是数据量合适的情况下,SUMPRODUCT还是非常好用的!

关于SUMPRODUCT函数,请阅读专题:【SUMPRODUCT从入门到精通


那么话说回来,如果我们数值是正常的,只是月份是文本格式,是否可以使用SUMIF函数呢?当然可以,我们只要获取到给定日期的第一天和当月最后一天的日期即可!

每个月的第一天和最后一天处理公式

第一天:直接写死,没有可说的
=DATE(2019,H2,1)
最后一天:EDATE往后+1个月,然后-1,就得到了本月的最后一天
=EDATE(DATE(2019,H2,1),1)-1

有了给定月份的第一天和最后一天,这样SUMIF就可以正常使用了!

以下的数据都是已经处理过的,正常的日期和数值格式!
▼常规情况下,使用如下公式即可!
=SUMIFS(F:F,A:A,">="&DATE(2019,H2,1),A:A,"<="&EDATE(DATE(2019,H2,1),1)-1)

每个人的学习都是从模仿开始的,模仿在初期也是一种非常理想的学习手段,但是不要一味的去模仿,要学会去思考,多问一个为什么,这样你才会进步!

否则不管的多长时间,你都可能是小白1号!

怎么样?你是那20%吗?我们都是从这80%过来的,但是请做剩下的20%!


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多