根据多个条件返回最频繁出现的string的计数
我在Excel 2013中有一个很大的数据表,如下所示:
A(Include?) B(Name) C(Region) 1 John Doe North 0 Jim Stevens South 0 Tom Brooks West 1 Bob Smith West 1 Mike Thomas North 0 Steve Adams East 1 John Smith Northwest
我需要帮助提出一个Excel公式,将显示我最频繁发生的区域名称的计数,但仅当相应的包括? 值等于1。
在这个例子中,我需要的公式会输出数字2,因为North是Region列中最频繁出现的条目,而只计算Include? 值等于1。
我已经能够使用下面的数组函数find最频繁发生的区域(不考虑包含列):
=INDEX(C:C,MODE(IF(C:C<>"",MATCH(C:C,C:C,0))))
然后,我可以使用以下命令find该值出现在列中的次数:
=COUNTIF(C:C,INDEX(C:C,MODE(IF(C:C<>"",MATCH(C:C,C:C,0)))))
但是,当我试图说明包括? 列,我没有得到正确的答案。 我最好的猜测是:
=COUNTIFS(C:C,C:C,INDEX(C:C,MODE(IF(C:C<>"",MATCH(C:C,C:C,0)))),A:A,1)
看来,这个公式仍然在find原始的区域 ,并且只是告诉我在包含哪个行中发生的次数? 等于1,而不是根据这个额外的限制重新计算最频繁发生的区域。
我期望所需的公式将以某种方式结合COUNTIFS
和/或SUMIFS
和/或一些INDEX+MATCH
组合,但我会打开其他选项。
试试这个:
=COUNTIFS(A:A,1,C:C,INDEX(C:C,MODE(IF(C:C<>"",MATCH(C:C,C:C,0)))))
这是一个数组公式,所以按Ctrl + Shift + Enter计算公式。
告诉我,如果它不起作用。 我在我的示例工作表中试过这个公式,我得到了预期的结果。
=INDEX(C:C,MODE(IF(A:A=1, MATCH(C:C,C:C,0))))
你非常接近。 所有你需要做的,如果改变你的数组函数检查列A是否等于1反对检查列C是否不是空白,这将为你工作。 我testing了一些不同的场景。
注意:input公式后,您必须在PC上按SHIFT + CTRL + ENTER或在Mac上按COMMAND + ENTER。
标准( 非数组 )公式来检索A列为1的 C列(如North,South,West等 )中出现重复次数的最大次数。
=MAX(INDEX((A2:A99=1)*COUNTIFS(A2:A99, 1, C2:C99, C2:C99), , ))
式:
=COUNTIFS($A:$A,1,$C:$C,MODE.SNGL(VALUE($C$2:$C$7)))
这个公式计算Include?
行Include?
等于1, Region
是Region
中的值的模式。 我利用区域名称都有不同的第一个字母的事实。
注意:如果模式function中出现“Tie”,则取最接近表格顶部的值。