EXCEL中SUMIF可不可以嵌套其他函数?

请问SUMIF里面能不能嵌套一个函数,根据B列与H列匹配,求C列,A列是一个辅助列,想不使用辅助列完成,谢谢

你这个问题最好不用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行)。而规范的标准的写法,则精准地去计算所需要的那个数据,运算效率提高的倍数是百万级的!自己不妨去验证下规范写法的运算中间结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-23

EXCEL中SUMIF可以嵌套其他函数,不过根据你的图片信息及补充说明,用SUMIF函数不大合适。所以建议你可以使用SUMPRODUCT函数和MONTH函数组合公式。
在I2单元格输入公式并向下填充,如下:
=SUMPRODUCT((MONTH(B:B)=H2)*C:C)
公式及效果图如下:

第2个回答  2020-03-23
不能!我最初和你一样,天真的认为,可以SUMIF(MOUTH出B列的月份并且形成数组,H2匹配月份,C列数字列)。
如果你非要不通过辅助列把月份求出来,可以考虑透视表的组合功能或者SUMP多条件求和
第3个回答  2020-03-23

公式:

=SUMPRODUCT((MONTH($B$2:$B$5)=H2)*($C$2:$C$5))

你可能要改变一下原来写公式的习惯,注意引用有效数据范围。

第4个回答  2020-03-23
SUMIF函数功能很强大,但也有一个问题,就是说第一参数和第三参数必须是单元格引用,不能是数组,所以如果条件需要计算,或者说不是直接的条件而是较为隐晦需处理的,就不能直接使用SUMIF了,只能如你这样用辅助列了,这里宜改用SUMPRODUCT函数,它的各个参数都可以是数组,H2中输入月份1,H3中是否2,I2中公式写为类似
=SUMPRODUCT((MONTH(B$2:B$100)=H2)*C$2:C$100)
这样,就可以下拉。具体单元格地址自己适当调整。
相似回答