EXCEL中SUMIF可不可以嵌套其他函数?
2020-03-23 · 知道合伙人软件行家
你这个问题最好不用sumif,而用其他函数来解决(假设B:F列的数据到200行):
=SUMPRODUCT((MONTH(B$2:B$200)=H2)*C$2:C$200)
一般在能确定数据的情况下,最好不要用整个列这样的形式(虽然百度很多人回答问题图省事也会用整列),试想一下,本来Excel要用函数去计算几行、几十行、几百行,最多也就几千的,你却在公式要它多计算百多万行空数据,有必要吗?虽然可能感觉不到多计算空数据会增加多少时间,但真的当公式复杂时,差别就明显了。
你的公式中另外还有的问题是,sumif中第2参数一般应该是一个单元格,I2单元格中的公式显然应该是H2,就是A列中的数据与H2时,对C列数据求和,现在用H:H做第2参数,公式得到的结果将是A列中满足条件H列的C列求和,是一个百多万行个数据的数组,而却需要的只有一个,为什么要多计算一百多万个并不需要的数据呢?
为了说明上面所说的,不妨做做个简单的模拟,姑且为了便于观看分析效果,如图,I2中按你的思维方式来输入公式,但还并不用整列,只多一些空白行,数据只到第30行,但公式中写到第40行:
I2=SUMIF(B2:B40,H2:H40,C2:C40)
得到正确结果是没问题的,下面截图是正确的写法:
I2=SUMIF(B2:B30,H2,C2:C30)
还可以
I2=SUMIF(B2:B30,H2,C2)
后面的求和区域参数只写与条件区域对应的第1个单元格,Excel会自动扩充到与条件区域相同的范围。
现在通过在公式编辑栏中查看公式运算效果来验证上面所说的多计算了无用数据。在公式编辑栏中拖鼠标选择公式=号右侧的所有内容,使之反色:
图中还可看到多选择的空白数据行被选择了
上图中公式被拖选后,按F9,就可看到公式运算的中间结果:
看到了吗?运算时的按H列的数据,分别sumif了!后面则是0!如果公式写的是B:B、C:C、H:H这样的整列,后面就会有100多万个毫无意义的0!前面也有一个0(对应第1行)。而规范的标准的写法,则精准地去计算所需要的那个数据,运算效率提高的倍数是百万级的!自己不妨去验证下规范写法的运算中间结果。
2020-03-23
如果你非要不通过辅助列把月份求出来,可以考虑透视表的组合功能或者SUMP多条件求和
=SUMPRODUCT((MONTH(B$2:B$100)=H2)*C$2:C$100)
这样,就可以下拉。具体单元格地址自己适当调整。