为什么 SEARCH 函数在搜索多个字符串时只能与 SUMPRODUCT 结合使用?

Why does the SEARCH function works only in combination with SUMPRODUCT when searching for multiple strings?

我正在检查 Excel 某列单元格中的文本是否在另一列的文本中。

要搜索的示例文本:

A 列

 1. a
 2. b
 3. c

要搜索的文本:

B 列

 1. aagg
 2. hgjk
 3. dhhd
 4. bahj
 5. adjd

这个公式有效:

=SUMPRODUCT(--ISNUMBER(SEARCH(A:A,B1)))

但是这个只适用于第一个单元格,其余单元格我得到#VALUE!错误:

={(SEARCH(A:A,B1))}

B 列

此外,第二个公式仅给出前三个单元格的结果,与 A 列中的单元格数量一样多。后两个为空。

为什么 SEARCH 可以与 SUMPRODUCT 一起使用但不能作为数组公式单独使用?

假设我们有以下数据...

A1:A3

    a
    b
    c

B1

    oboe

在这种情况下,SEARCH(A$1:A$3,B1) returns 以下值数组...

#VALUE!
2
#VALUE!

如果在单个单元格中输入公式,则只有此数组中的第一个值会传输到此单元格。所以,在这种情况下,#VALUE!将显示在单元格中。

但是,如果 select 三个单元格,然后输入公式,然后使用 CTRL+SHIFT+ENTER 确认,数组中的所有三个值都会传输到这些单元格。

请注意,由于 A1:A3 是垂直单元格范围,因此您需要 select 垂直单元格范围以 return 这些值。例如,您可以 select D1:D3,然后在 select 编辑这三个单元格时输入公式,然后使用 CTRL+SHIFT+ENTER 确认。

现在,进入有趣的部分。要 return TRUE 或 FALSE,您需要先将由 SEARCH 编辑的值数组 return 传递给 ISNUMBER,然后您需要将值数组 returned 传递给 ISNUMBER通过 ISNUMBER 到 OR 函数,如果至少一个值 return 由 ISNUMBER 编辑为真,则该函数将 return 为真。否则,它 return 是错误的。因此,您将使用以下公式,需要使用 CTRL+SHIFT+ENTER 确认...

=OR(ISNUMBER(SEARCH(A:A,B1)))

公式的计算方式如下...

=OR(ISNUMBER(SEARCH(A:A,B1)))

=OR(ISNUMBER(SEARCH({"a";"b";"c"},"oboe")))

=OR(ISNUMBER({#VALUE!;2;#VALUE!}))

=OR({FALSE;TRUE;FALSE})

...其中 return 正确。对了,这里需要ISNUMBER。我们不能简单地将由 SEARCH 编辑的值数组 return 传递给 OR 函数。如果我们这样做,OR 函数将 return #VALUE!,因为值数组包含错误值,在本例中为 #VALUE!。这就是我们使用 ISNUMBER 的原因,这样任何错误值在传递给 OR 函数之前都会被转换为 FALSE。因此 OR 函数将始终获得由 TRUE and/or FALSE 组成的值数组。

希望对您有所帮助!