计算特定范围内的值的出现次数(Excel)(无VBA)

时间:2016-07-06 13:12:40

标签: excel countif

我需要计算特定范围的单元格(包含字符串或数字)中给定值的所有出现次数,具体取决于存储在另一个单元格中的参数。

我准备了一个简单的Excel表作为示例(参见附图):假设我想计算BASE“100”的所有VALUE“4”的出现次数。结果应为:2(C4 + C5)。

Attached image

我尝试使用COUNTIFS和FIND函数,但没有结果。前者仅考虑确切的值(因此单元格C5中的4将被忽略),而我似乎无法向后者添加另一个条件 - BASE列。

事实是我需要用公式解决这个问题,不需要编程。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

使用SUMPRODUCT:

=SUMPRODUCT(($B$2:$B$10=100)*(ISNUMBER(SEARCH(4,$C$2:$C$10))))

enter image description here

答案 1 :(得分:0)

还有其他一些方法,更简单的方法就是添加另一个为您识别匹配的列,然后让您的计数只对该列的结果求和。

Solution image

所以我们把我们想要找到的值放在一些参考单元格中,BASE匹配进入G2,我们正在寻找的VALUE进入G3。

在D栏中,我们在D2中添加了一个公式: “= IF(B2 = $ G $ 2,IF(ISERR(SEARCH($ G $ 3 C2)),0,1),0)”

如果BASE匹配,则返回0,我们可以找到至少一个VALUE

的出现
  • B2 = $ G $ 2 - BASE列是否与我们正在寻找的BASE相匹配
  • ISERR(SEARCH($ G $ 3,C2)) - 搜索VALUE会返回错误(如果有,我们知道VALUE不存在)

将此公式复制到D列中的所有单元格,然后您可以使用简单的SUM(D:D)来计算满足条件的出现次数。

更整洁但稍微复杂的替代方法是使用数组公式来进行匹配查找和计算所有在一个公式中。这看起来像这样:

“{= SUM(IF(B:B = $ G $ 2,IF(ISERR(SEARCH($ G $ 3,C:C)),0,1)))}”

与D列中的公式几乎相同,但现在我们使用B:B和C:C代替B2 / C2等,并将SUM粘贴在整个事物上。如果使用Ctrl + Shift + Enter而不是Enter完成编辑,则会使其成为数组公式。

Microsoft Array Formula Guidelines

注意:这不会计算单个VALUE单元格中多次出现4次。

P.S。假设你希望它在这种情况下实际返回3(你错过了C7中的4)