题目如图所示:
这是一个条件求和的问题类型,和一般的条件求和相比有两个不同之处:
1、需要统计的项目有两个:火龙果和圣女果,这并不是两个条件,而是一个条件要考虑两种内容;
2、具体条件只是数据源中的一部分内容。
结合自己掌握的函数去分析解题的思路,动手尝试后再看下文的内容,对于增加公式函数的使用经验是非常有好处的!
解法1
公式1:=SUMIF(A:A,"*火龙果*",B:B)+SUMIF(A:A,"*圣女果*",B:B)
关于SUMIF函数的用法参阅教程:
关于通配符的用法参阅教程:
这个公式算是中规中矩的一种解决方法,适合初学者。
但是万一要统计的品种不是两种而是更多,就不方便了,因此可以在这个思路的基础上,可以使用SUM函数将两个SUMIF进行合并,请看解法2。
解法2
公式2:=SUM(SUMIF(A:A,"*"&{"火龙果","圣女果"}&"*",B:B))
公式解析:在第一个解法中,两个SUMIF中只有第二参数有区别,分别是"*火龙果*"和"*圣女果*"可以将两个品种合并为常量数组后作为SUMIF的第二参数,需要注意的是,通配符不能出现在常量数组中,需要使用&进行连接,SUMIF的第二参数使用常量数组后,可以得到数组中每个值所对应的结果,使用F9就能看到效果:
最后使用SUM函数完成两个品种的销量汇总,如果是多个品种的话,只需要在常量数组中增加项目即可。
这种方法的扩展性非常强,建议大家理解后加以练习。
对于公式函数的爱好者来说,解决问题的思路多多益善,接下来再看一种解法。
解法3
公式3:=SUMPRODUCT(ISNUMBER(FIND({"火龙果","圣女果"},A3:A13))*(B3:B13))
这个公式中利用了FIND函数,避开了通配符,我们可以看下FIND函数在此处发挥了什么样的作用:
FIND({"火龙果","圣女果"},A3:A13)只做了一件事,在A3:A13这些单元格中查找火龙果与圣女果出现的位置,如果找不到,就返回错误值。
使用F9将FIND的查找结果显示出来后,可以看到在五个单元格找到了所需的数据,这里得到的结果是几不重要,重要的是找到了!
进而使用ISNUMBER函数将FIND得到的结果变成一组逻辑值:
这就把那些错误值变成了逻辑值FALSE,把包含火龙果与圣女果的值变成了逻辑值TRUE,接下来就非常简单了,用这组逻辑值与销量所在的区域相乘,会得到火龙果与圣女果的销量:
利用SUMPRODUCT可以对乘积求和的特点完整最终的计算。
这个公式难度要高于前面两种,不仅要求对函数的功能非常熟悉,还得了解一些数组的原理。
关于数组的基础知识,可以参阅教程:
也许你觉得这个公式已经够难了,实际上还有难度系数更高的一种解法。
解法4
公式4:=SUM(MMULT(TRANSPOSE(--ISNUMBER(FIND({"火龙果","圣女果"},A3:A13))),B3:B13))
估计很多朋友对于公式中出现的两个函数TRANSPOSE和MMULT会感到很陌生,其中TRANSPOSE是一个实现数据转置功能的函数,而MMULT是一个对两个矩阵求积的函数,圈里人习惯将这个函数称作美眉函数。
关于这个函数的用法,可以参阅教程:
公式4的具体计算原理就不是几句话能解释清楚的,涉及到了数组的构建和数组函数的用法。
就今天这个问题而言,推荐掌握第二种解法,如果你还有不同的解法可以在文末留言。
联系客服