为什么 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 列
aagg -> 1
hgjk -> #VALUE!
dhhd -> #VALUE!
bahj -> 空单元格
adjd -> 空单元格
此外,第二个公式仅给出前三个单元格的结果,与 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 组成的值数组。
希望对您有所帮助!
我正在检查 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 列
aagg -> 1
hgjk -> #VALUE!
dhhd -> #VALUE!
bahj -> 空单元格
adjd -> 空单元格
此外,第二个公式仅给出前三个单元格的结果,与 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 组成的值数组。
希望对您有所帮助!