今天介绍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等函数的特殊状况”案例文件 |
|