当我像这样在excel 2013中放置一组公式时:
A1 = abc
A2 = ac
A3 = bc
B1 = OR(TRUE) = TRUE
B2 = OR(FALSE) = FALSE
B3 = ISNUMBER(SEARCH({"a", "b"}, A1)) = TRUE
B4 = ISNUMBER(SEARCH({"a", "b"}, A2)) = TRUE
B5 = ISNUMBER(SEARCH({"a", "b"}, A3)) = FALSE
但是,如果我在公式中添加OR函数:
C1 = OR(ISNUMBER(SEARCH({"a", "b"}, A1))) = TRUE
C2 = OR(ISNUMBER(SEARCH({"a", "b"}, A2))) = TRUE
C3 = OR(ISNUMBER(SEARCH({"a", "b"}, A3))) = TRUE
从逻辑上讲,单元格C3中的OR函数所取反的输入应该为FALSE(请参阅B5,并将其与B2进行比较),但是当它应为FALSE时,结果为TRUE。我想知道为什么会这样吗?请问对此有解释吗?在2007年之后的所有版本的excel中都会发生这种情况吗?
另一个有趣的事实是,如果我将B5中的结果作为OR函数的直接输入,例如:
C4 = OR(B5) = FALSE
结果为FALSE,但基本上与C3相同。为什么会发生这种不一致?是一个错误吗?
更新的问题
根据以下答案,OR函数是“数组友好”函数。这到底是什么意思?像我这样的初学者如何知道excel中的哪个函数是“数组友好的”而哪些不是?有这样的清单吗?
这是否还意味着SEARCH和ISNUMBER函数不是“数组友好的”?但是它接受“数组”作为参数。我很困惑。
答案 0 :(得分:1)
OR
可以接受多个参数,或评估数组中的所有项目...
ISNUMBER(SEARCH({"a","b"}, A3))
在将公式结果显示在单个单元格的上下文中返回单个值,但在诸如OR
内部的数组友好上下文中返回一个数组(我不知道确切的名称的功能。)
OR({FALSE, TRUE})
是TRUE
,类似于OR(ISNUMBER(SEARCH("a", A3)), ISNUMBER(SEARCH("b", A3)))
。
所有中间功能都必须是数组友好的,这样才能正常工作(我相信大多数功能都可以,但我不知道任何清单-您必须自己做一些研究,这是不付费的)。
单个单元格的输出不是数组友好的。当结果是数组时,例如{TRUE, FALSE}
并且显示在单个单元格中,只有第一个值在该单元格中可见。
有关可将1个公式插入多个单元格的数组公式的更多信息:https://support.office.com/en-us/article/create-an-array-formula-e43e12e0-afc6-4a12-bc7f-48361075954d