Sumif的这个特殊问题,会让计算速度变的特别慢!
今天介绍Sumif函数的一种特殊情形下的速度问题。
在我们这个系列中,SUMIF的出镜率很高,主要是因为这是一个非常常用的函数。
我们的数据如下:
为了测试,我们在另一个Sheet中的区域B2:B33中,使用了SUMIF公式:
这个公式就是将第一张图片中的数据区域中的B列与H2单元格相比较,然后计算所有满足条件的E列的值。
问题是,当H2单元格输入“a"时,这29个公式的计算时间是0.06秒:
当H2单元格输入"1"时,这29个公式的计算时间是1.07秒:
大家可以试一下,无论是输入数值1,还是输入文本1,都是一样的。
如果不引用单元格,而是将公式中的$H$2,直接换成"a",或者"1",结果也是一样的。
造成这种现象的原因跟Excel内部实现SUMIF的方式有关,我们无从推测。但是造成这种现象的场景是确定的:当条件区域是文本类型为主,但是比较的值是数字时,就会导致SUMIF计算速度慢:
这个不仅是SUMIF函数,类似的COUNTIF,SUMIFS,COUNTIFS,AVERAGEIF,AVERAGEIFS都是这样的。
而如果反过来,添加区域是数值,而比较的条件无论是文本还是数值,计算速度都比较快。
解决方法很简单,将条件从"1"变成"*1":
计算速度立即提升了15倍
或者,可以将公式改成:
SUMIF(Sheet1!$B$3:$B$10000,“*”&$H$2,Sheet1!$E$3:$E$10000)
结果是一样的。
关注本公众号,点击底部菜单“联系客服”,与客服取得联系,索取“计算性能分析—sumif等函数的特殊状况”案例文件
赞 (0)