28

我试图让 Excel 通过 ORing 两个数组来使我成为一个数组。例如,让两个数组A1:A37, 8,-3B1:B3, 4, -8-8

这应该相当简单,但似乎

OR ( A1:A3 > 0 ; B1:B3 > 0 )

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

当然我可以用一个肮脏的把戏,比如

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

但谁会想要维持它呢?

Ctrl此外,在“CSE ( ++ Shift)Enter公式”( http://www.mrexcel.com/articles/CSE-array-formulas-excel.php )周围可能有一些东西可以搜索,但它看起来确实像黑魔法。

我错过了一些简单的事情吗?

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

4

6 回答 6

31

您通常不能在“数组公式”中使用 OR 或 AND,因为正如您在此处发现的那样,它们仅返回一个结果(AND 仅当所有条件为 TRUE 时为 TRUE,OR 为 TRUE 时任何为 TRUE,如您将期望,因此在您的示例中,只要 6 个值中的至少一个为正值,您就会得到 TRUE)。

我会使用与您的建议类似的东西,有效地使用 + 代替 OR,尽管您不需要前两个 *1 因为 + 强制,所以这就足够了

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

尽管如果您有一个可以是一件事或另一件事的列,那么这肯定是相互排斥的,所以也许只需要

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

于 2012-04-12T20:13:02.770 回答
6

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

IF(A1:A3 > 0, TRUE, IF(B1:B3 > 0, TRUE, FALSE))

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

基本上,您只是在编写自己的 OR 函数。你可以用 AND 做同样的事情。只要你有条件和不,你可以用它们做其他一切。

于 2014-04-03T13:17:03.730 回答
6

8年后...

=BITOR(A1:A3>0,B1:B3>0)      for a 0 or 1 binary response

或者

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

记住 CTRL+SHIFT+ENTER!

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

=BITAND(BITOR(A1:A3,B1:B3),BITOR(NOT(A1:A3),NOT(B1:B3)))=1
于 2020-11-23T09:34:52.143 回答
3

我为表格中某些数据的中位数做了一个数组公式。例如,数据中有 X、Y 和 Z 组。我想获得两种数据 X 和 Y 的中位数,因此无法在数组中使用 OR 语句。

我所做的是在原始数据集中创建一个新列。IF 列 A=X 或 A=Y,显示“1”,IF 不显示“0”

然后我根据新列编写了数组公式,因为所有数据组在该列中都被重新分类为 1 或 0,我不再需要数组中的 OR 语句。

这对我有用,我可以轻松地将新数据复制并粘贴到原始表中,而不会弄乱这个新的 IF 语句,因此很容易更新。

于 2014-05-16T00:12:36.340 回答
3

您可以将该IF函数与您的数组结果一起使用,它将为您提供一系列 1 和 0 作为 OR。例如:

IF(((A1:A3>0)+(B1:B3>0)),1,0)

我发现这是最简单的方法。

于 2018-08-20T11:26:43.417 回答
1

我同意@barry houdini,但也想指出,列是否相同或不同并不重要。+ 或 * 将解决它的 OR/AND

或:

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

与:

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

这是一个工作示例公式

={MAX(IF((('Stock Statement Dec2019'!$A$2:$A$676=Synthesis!$A$12)*('Stock Statement Dec2019'!$B$2:$B$676=Synthesis!A13));'Stock Statement Dec2019'!$Q$2:$Q$676))}
于 2020-01-16T13:58:22.867 回答