根据不同范围内的多个条件,优化COUNT值

时间:2015-06-03 14:46:11

标签: arrays excel count multiple-conditions

我有一个Excel电子表格,包含某些产品之间的所有可能组合,例如a-a, a-b, a-c, b-a, b-b, b-c, c-a, c-b and c-c。基于这些组合,计算值并与历史值进行比较。减去这两个值,得到-1,0或1。

现在,在另一个电子表格中,我列出了所有产品(这里是a,b和c),对于每个产品,我想知道有多少-1,0'例如,当它是组合中的第二种产品时,产品具有s和1的结果我想知道有多少......- b导致0。

我的第一个想法是使用一个简单的COUNTIF,使用减法遍历范围:COUNTIF(RANGE:0)。当然,这会给出范围内的所有0,而不考虑产品。然后,我尝试了SUM(IF(AND("range of the second product"="b";"range of the subtraction result"=0);1)),但这会产生#N/A。我不确定下一步该尝试什么。

在其他一些相关主题中,建议根据http://www.cpearson.com/excel/ArrayFormulas.aspx

使用数组。

因此,我尝试了公式{=COUNT(("2ndproductrange"="b") * ("resultrange"<0))},但这返回了总行数。 {=COUNTIF(("2ndproductrange"="b")*("resultrange");<0)}的变体不是有效的公式。

1 个答案:

答案 0 :(得分:1)

我觉得您尝试执行符合2个不同标准的COUNT操作。正如您所指出的,COUNTIF公式只考虑了一个条件,因此有一个COUNTIFS公式可以采用多个公式。以下是我对您的示例范围的“思考”:

=COUNTIFS(2ndproductrange;"b";resultrange;"<0")

具体的例子如下:

       A               B       C       D        E   F   G
---------------------------------------------------------
Historical Value    Product        Countifs     a   b   c
       1               c              <0        1   2   0
      -1               a               0        0   1   1
      -1               b              >0        1   2   1
       1               b                    
       1               b                    
       0               c                    
      -1               b                    
       0               b                    
       1               a

在上面的示例中,公式为:

=COUNTIFS($B:$B;"a";$A:$A;"<0") =COUNTIFS($B:$B;"b";$A:$A;"<0") =COUNTIFS($B:$B;"c";$A:$A;"<0")
=COUNTIFS($B:$B;"a";$A:$A;"0")  =COUNTIFS($B:$B;"b";$A:$A;"0")  =COUNTIFS($B:$B;"c";$A:$A;"0")
=COUNTIFS($B:$B;"a";$A:$A;">0") =COUNTIFS($B:$B;"b";$A:$A;">0") =COUNTIFS($B:$B;"c";$A:$A;">0")

对于那些使用逗号,作为列表分隔符区域设置的用户,相同的公式为:

=COUNTIFS($B:$B,"a",$A:$A,"<0") =COUNTIFS($B:$B,"b",$A:$A,"<0") =COUNTIFS($B:$B,"c",$A:$A,"<0")
=COUNTIFS($B:$B,"a",$A:$A,"0")  =COUNTIFS($B:$B,"b",$A:$A,"0")  =COUNTIFS($B:$B,"c",$A:$A,"0")
=COUNTIFS($B:$B,"a",$A:$A,">0") =COUNTIFS($B:$B,"b",$A:$A,">0") =COUNTIFS($B:$B,"c",$A:$A,">0")