根据多个条件

时间:2015-05-08 20:47:48

标签: excel excel-formula

我在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 列中最常出现的条目,而只计算包含?<的条目/ strong> value等于1.

我已经能够使用以下数组函数找到最常出现的区域(不考虑包含列):

=INDEX(C:C,MODE(IF(C:C<>"",MATCH(C:C,C:C,0))))

然后,我可以使用以下命令查找此值在列中显示的次数:

=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)

看来这个公式仍然找到了原来的区域,只是告诉我在包含?等于1的行中发生的次数,不基于此额外限制重新计算最常发生的区域。

我期望所需的公式会以某种方式合并COUNTIFS和/或SUMIFS和/或某些INDEX+MATCH组合,但我会对其他选项持开放态度。

4 个答案:

答案 0 :(得分:1)

试试这个:

=COUNTIFS(A:A,1,C:C,INDEX(C:C,MODE(IF(C:C<>"",MATCH(C:C,C:C,0)))))


这是一个数组公式,所以按 ctrl + shift + 输入来计算公式。
告诉我它是否有效。 我在我的示例工作表中尝试了这个公式,我得到了预期的结果。

答案 1 :(得分:1)

=INDEX(C:C,MODE(IF(A:A=1, MATCH(C:C,C:C,0))))

你非常接近。如果更改数组函数以检查列A是否等于1而不是检查列C是否为空,那么您需要做的就是这对您有效。我测试了一些不同的场景。

注意:输入公式后,您必须在PC上按SHIFT + CTRL + ENTER或在Mac上按COMMAND + ENTER。

答案 2 :(得分:0)

公式:
=COUNTIFS($A:$A,1,$C:$C,MODE.SNGL(VALUE($C$2:$C$7)))

此公式计算Include?等于1的行,RegionRegion中值的模式。我利用了这个地区名称都有不同的第一个字母的事实。

注意:如果是&#34;领带&#34;在模式功能中,它取最接近工作表顶部的值。

答案 3 :(得分:0)

标准(非数组)公式,用于检索列C中的重复项的最大出现次数(例如北,南,西等),其中A列是 1

=MAX(INDEX((A2:A99=1)*COUNTIFS(A2:A99, 1, C2:C99, C2:C99), , ))