0

如果列中单元格中的文本在另一列的文本中,我正在检查 Excel。

要搜索的示例文本:

A栏

 1. a
 2. b
 3. c

要在其中搜索的文本:

B栏

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

这个公式有效:

=SUMPRODUCT(--ISNUMBER(SEARCH(A$1:A$3,B1)))

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

={(SEARCH(A$1:A$3,B1))}

B栏

  • aagg -> 1

  • hgjk->#VALUE!

  • dhhd -> #VALUE!

  • bahj -> 空单元格

  • adjd -> 空单元格

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

是什么让 SEARCH 与 SUMPRODUCT 一起工作,但不能单独作为数组公式工作?

4

1 回答 1

1

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

A1:A3

    a
    b
    c

B1

    oboe

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

#VALUE!
2
#VALUE!

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

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

但请注意,由于 A1:A3 是一个垂直范围的单元格,您需要选择一个垂直范围的单元格来返回这些值。例如,您可以选择 D1:D3,然后在选择这三个单元格的同时输入公式,然后按 CTRL+SHIFT+ENTER 确认。

现在,对于有趣的部分。要返回 TRUE 或 FALSE,您需要首先将 SEARCH 返回的值数组传递给 ISNUMBER,然后您需要将 ISNUMBER 返回的值数组传递给 OR 函数,如果ISNUMBER 返回的值中至少有一个为 TRUE。否则,它返回 FALSE。因此,您将使用以下公式,需要使用 CTRL+SHIFT+ENTER 确认...

=OR(ISNUMBER(SEARCH(A$1:A$3,B1)))

这是公式的评估方式...

=OR(ISNUMBER(SEARCH(A$1:A$3,B1)))

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

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

=OR({FALSE;TRUE;FALSE})

...返回 TRUE。顺便说一下,这里需要ISNUMBER。我们不能简单地将 SEARCH 返回的值数组传递给 OR 函数。如果我们这样做了,OR 函数将返回 #VALUE!,因为值数组包含错误值,在本例中为 #VALUE!。这就是我们使用 ISNUMBER 的原因,以便在将任何错误值传递给 OR 函数之前将其转换为 FALSE。所以 OR 函数总是会得到一个由 TRUE 和/或 FALSE 组成的值数组。

希望这可以帮助!

于 2019-06-10T14:03:12.917 回答