我有一张表格,里面有两个用数字填充的列,如下所示:
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))
注意:这是一个赋值,规则根本就没有宏,只有一个公式没有其他单元格的部分结果。
感谢您的回答。
答案 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()
的问题是它不在数组结构中执行,或者至少我从来没有得到它来产生数组结果。