数组式搜索功能中的结果很奇怪

时间:2019-08-03 12:14:26

标签: excel-formula

当我像这样在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函数不是“数组友好的”?但是它接受“数组”作为参数。我很困惑。

1 个答案:

答案 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