计算多个列表中不同的从属巧合

时间:2018-04-06 21:28:33

标签: excel-formula

我有一张表格,里面有两个用数字填充的列,如下所示:

A | B
-----
1 | 2
3 | 1
4 | 3
5 | 2
1 | 2

我想知道如何获得巧合的数量,其中有一个' 1'在B A中,有多少人有一个' 2'在他们的对应行中。 因此,对于示例,结果将是2,因为第一行中有1& 2,最后一行中有1& 2:

代码中的等价物如下:

%MATLAB SINTAX
A = {1 ; 3 ; 4 ; 5 ; 1};
B = {2 ; 1 ; 3 ; 2 ; 2};
sum = 0;

for i=1:length(A)
    if(A(i)==1 and B(i)==2)
        sum = sum+1;
    end
end

在这种情况下,sum是我想要的结果。

我希望做一些像SUM(IF(AND(A1:A5 = 1,B1:B5 = 2),1,{0))

注意:这是一个赋值,规则根本就没有宏,只有一个公式没有其他单元格的部分结果。

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

有很多方式和评论说明,COUNTIFS()将是最简单和最有效的......

正如您提供的编码示例,我认为我会尝试使用这样的数组公式尽可能地制定您的逻辑:( Ctrl + Shift + < kbd>仍然在公式栏中输入)

=IFERROR(SUM(IF(IF(A1:A5=1,B1:B5)=2,1)),0)

我们使用内部if(B:B)构建一个FALSE或结果IF(A1:A5=1,B1:B5)单元格内容的数组,然后将该数组与外部IF([innerIf]=2,1)中的逻辑等同以获得数组为FALSE或1,然后我们总结得到结果。我认为它将处理错误,因为将FALSE视为0,但是当我写这个伪时,我把它包装在IFERROR()以防万一(如果错误仍然发生,提供IF()的假变量陈述为0)。

AND()的问题是它不在数组结构中执行,或者至少我从来没有得到它来产生数组结果。