如何在Excel中将逻辑或应用于数组

我想通过ORing两个数组使Excel成为一个数组。 举例来说,让两个数组A1:A3为7,8,-3,B1: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 

但是谁又想保持这个呢?

此外,可能有东西要search“CSE(Ctrl-Shift-Enter)公式”(http://www.mrexcel.com/articles/CSE-array-formulas-excel.php),但它确实看起来像黑魔法。

我错过了一些容易吗?

对于那些好奇的人来说,我试图build立的实际公式当然要复杂一点。 它试图计数(通过SUMPRODUCT)“(状态== A或状态== B)和date=某个单元格”的所有行。 我正在寻找的OR只是我的sumproduct的一个数组,并没有在单元格中定义(这太容易了)

在“数组公式”中,通常不能使用OR或AND,因为正如您在这里发现的那样,它们只返回单个结果(只有在所有条件为TRUE的情况下,AND才为TRUE,或者TRUE为TRUE,期望,所以在你的例子中,只要6个值中的至less一个是正值,你就会得到TRUE。

我会使用类似于你的build议,用+代替或有效的,虽然你不需要前两个* 1,因为+ co-erces,所以这就够了

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

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

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

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

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

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

基本上你只是写自己的ORfunction。 你可以用AND来做同样的事情。 只要你有条件而没有条件,你可以把所有的东西都拿出来。

我为表内某些数据的中位数做了一个数组公式。 例如,在数据中有组X,Y和Z.我想要得到两种types的数据X和Y的中位数,所以不能在数组中使用OR语句。

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

然后我写了基于新列的Array公式,因为所有的数据组在这个列中重新分类为1或0,我不再需要数组中的OR语句。

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