如何将逻辑OR应用于Excel中的数组

PPC*_*PPC 19 arrays excel

我试图通过ORing两个数组让Excel成为一个数组.作为一个例子,让两个数组A1:A37,8,-3B1:B34,-8,-8.

这应该相当简单,但似乎是这样

OR ( A1:A3 > 0 ; B1:B3 > 0 )
Run Code Online (Sandbox Code Playgroud)

返回TRUE而不是我期待的数组(TRUE, TRUE, FALSE).

当然我可以使用肮脏的技巧

(((A1:A3 > 0)*1 + (B1:B3 > 0)*1) >= 1) *1
Run Code Online (Sandbox Code Playgroud)

但谁愿意维持这一点呢?

此外,有可能搜索"CSE(Ctrl+ Shift+ Enter)公式"(http://www.mrexcel.com/articles/CSE-array-formulas-excel.php),但它看起来真的像黑魔法.

我错过了一些容易的事吗?

对于那些对它感兴趣的人来说,我正在尝试构建的实际公式当然要复杂一些.它试图计算(通过SUMPRODUCT)所有行(status == A OR status == B) AND Date = some cell.我正在寻找的OR只是我的一个数组,SUMPRODUCT并没有在单元格中定义(这太容易了).

bar*_*ini 20

你通常不能在"数组公式"中使用OR或AND,因为正如你在这里发现的那样,它们只返回一个结果(只有当所有条件都为TRUE时,AND为TRUE,OR为TRUE,任何为TRUE,如你所愿期待,所以在你的例子中,只要6个值中至少有一个是正数,你就会得到TRUE.

我会使用与你的建议类似的东西,使用+代替OR,虽然你不需要前两个*1,因为+ co-erces,所以这就足够了

=((A1:A3 > 0) + (B1:B3 > 0) >0) *1

虽然如果你有一个列可以是一个或另一个,那么这是相互排斥的,当然,也许这只需要

=(A1:A3="A")+(A1:A3="B")

  • 我发现这些文章很有帮助:http://dailydoseofexcel.com/archives/2004/12/04/logical-operations-in-array-formulas/ 和 http://www.cpearson.com/excel/arrayformulas.aspx (2认同)

小智 12

8年后...

=BITOR(A1:A3>0,B1:B3>0)      for a 0 or 1 binary response
Run Code Online (Sandbox Code Playgroud)

或者

=BITOR(A1:A3>0,B1:B3>0)=1    for a FALSE or TRUE boolean response
Run Code Online (Sandbox Code Playgroud)

记住 CTRL+SHIFT+ENTER!

AND、OR 和 XOR 似乎对数组不友好,但 BITAND、BITOR 和 NOT 就可以了。要进行数组友好的 XOR,您需要将其分解为其他运算符,例如

=BITAND(BITOR(A1:A3,B1:B3),BITOR(NOT(A1:A3),NOT(B1:B3)))=1
Run Code Online (Sandbox Code Playgroud)


use*_*027 5

一个干净且相对简单的方法是使用嵌套的IF语句:

IF(A1:A3 > 0, TRUE, IF(B1:B3 > 0, TRUE, FALSE))
Run Code Online (Sandbox Code Playgroud)

如果A中的数字大于0,则返回TRUE,否则,如果B中的数字大于0,则返回TRUE,否则返回FALSE.

基本上你只是在编写自己的OR函数.你可以用AND做同样的事情.只要你有条件和缺点,你就可以用它们制造其他所有东西.