返回假阴性的Excel查找/搜索功能

返回假阴性的Excel查找/搜索功能,excel,excel-formula,Excel,Excel Formula,这个简单的问题把我难住了。我试图在单个单元格中搜索项目列表,但由于某些原因,它只在部分时间内有效 列A:C全部格式化为文本,列A中没有尾随/前导空格 将search替换为find会返回相同的结果,使用命名范围而不是A2:A4 搜索单个/特定项目(=搜索($3,B5))效果很好。1]查找文本位置 在C2中,公式被复制下来: =LOOKUP(9^9,SEARCH(A$2:A$4,B2)) =LOOKUP(9^9,SEARCH(A$2:A$4,B2),A$2:A$4) 2] 查找文本结果 在D2

这个简单的问题把我难住了。我试图在单个单元格中搜索项目列表,但由于某些原因,它只在部分时间内有效

列A:C全部格式化为文本,列A中没有尾随/前导空格

search
替换为
find
会返回相同的结果,使用命名范围而不是
A2:A4

搜索单个/特定项目(
=搜索($3,B5)
)效果很好。

1]查找文本位置

C2
中,公式被复制下来:

=LOOKUP(9^9,SEARCH(A$2:A$4,B2))
=LOOKUP(9^9,SEARCH(A$2:A$4,B2),A$2:A$4)
2] 查找文本结果

D2
中,复制公式:

=LOOKUP(9^9,SEARCH(A$2:A$4,B2))
=LOOKUP(9^9,SEARCH(A$2:A$4,B2),A$2:A$4)

1]查找文本位置

C2
中,公式被复制下来:

=LOOKUP(9^9,SEARCH(A$2:A$4,B2))
=LOOKUP(9^9,SEARCH(A$2:A$4,B2),A$2:A$4)
2] 查找文本结果

D2
中,复制公式:

=LOOKUP(9^9,SEARCH(A$2:A$4,B2))
=LOOKUP(9^9,SEARCH(A$2:A$4,B2),A$2:A$4)

您的公式正在返回一个值数组,如果使用公式栏上的公式计算工具,您可以看到该数组。在工作表上,您将只看到第一个数组元素

展开后,返回结果如下所示:

请注意,只有当“数字”在数组中位于第一位时,您才能看到它(例如
黄色

如果您想要的只是一个正确/错误的答案,那么您需要删除错误并
结果:

=OR(ISNUMBER(SEARCH($A$2:A$4,B2)))
这是一个数组公式。在某些版本的Excel中,您可能需要在按住ctrl+shift键的同时按enter键来输入/确认数组公式。如果操作正确,Excel将在公式栏中看到的公式周围放置大括号
{…}

如果你还需要别的东西,请澄清

编辑:OP现在澄清了他真正想要的是返回颜色。 假设只返回一种颜色,下面将返回第一种颜色:

    =IFERROR(INDEX($A:$A,AGGREGATE(15,6,1/(ISNUMBER(SEARCH($A$2:A$4,B2)))*ROW($A$2:$A$4),1)),"")

如果有多种颜色,并且您希望全部返回,最好使用Excel 2016+和
TEXTJOIN
功能。如果您这样做,您可以使用以下内容:

=TEXTJOIN(", ",TRUE,IFERROR(INDEX($A:$A,AGGREGATE(15,6,1/(ISNUMBER(SEARCH($A$2:A$4,B2)))*ROW($A$2:$A$4),{1,2,3})),""))
在上面的公式中,数组常数
{1,2,3}
指的是
find_text
中可能的条目数。如果此数字远远大于3,或将发生变化,请使用公式替换数组常量以生成相关数组

其中一个公式可能是:

ROW($A$1:INDEX($A:$A,ROWS(find_text)))
整个公式可能是:

=TEXTJOIN(", ",TRUE,IFERROR(INDEX($A:$A,AGGREGATE(15,6,1/(ISNUMBER(SEARCH(find_text,B2)))*ROW(find_text),ROW($A$1:INDEX($A:$A,ROWS(find_text))))),""))

您的公式正在返回一个值数组,如果使用公式栏上的公式计算工具,您可以看到该数组。在工作表上,您将只看到第一个数组元素

展开后,返回结果如下所示:

请注意,只有当“数字”在数组中位于第一位时,您才能看到它(例如
黄色

如果您想要的只是一个正确/错误的答案,那么您需要删除错误并
结果:

=OR(ISNUMBER(SEARCH($A$2:A$4,B2)))
这是一个数组公式。在某些版本的Excel中,您可能需要在按住ctrl+shift键的同时按enter键来输入/确认数组公式。如果操作正确,Excel将在公式栏中看到的公式周围放置大括号
{…}

如果你还需要别的东西,请澄清

编辑:OP现在澄清了他真正想要的是返回颜色。 假设只返回一种颜色,下面将返回第一种颜色:

    =IFERROR(INDEX($A:$A,AGGREGATE(15,6,1/(ISNUMBER(SEARCH($A$2:A$4,B2)))*ROW($A$2:$A$4),1)),"")

如果有多种颜色,并且您希望全部返回,最好使用Excel 2016+和
TEXTJOIN
功能。如果您这样做,您可以使用以下内容:

=TEXTJOIN(", ",TRUE,IFERROR(INDEX($A:$A,AGGREGATE(15,6,1/(ISNUMBER(SEARCH($A$2:A$4,B2)))*ROW($A$2:$A$4),{1,2,3})),""))
在上面的公式中,数组常数
{1,2,3}
指的是
find_text
中可能的条目数。如果此数字远远大于3,或将发生变化,请使用公式替换数组常量以生成相关数组

其中一个公式可能是:

ROW($A$1:INDEX($A:$A,ROWS(find_text)))
整个公式可能是:

=TEXTJOIN(", ",TRUE,IFERROR(INDEX($A:$A,AGGREGATE(15,6,1/(ISNUMBER(SEARCH(find_text,B2)))*ROW(find_text),ROW($A$1:INDEX($A:$A,ROWS(find_text))))),""))

请参阅。请注意,实际上您正在尝试比较值列表(读取:数组)。相关:请参阅。注意,您实际上是在尝试比较一个值列表(读:数组)。相关:值得注意的是,如果在句子中找到多个文本,这将找到最后匹配的文本。此外,虽然您的答案为原始问题提供了可能的解决方案,它没有解释所遇到问题的观察行为。值得注意的是,如果在句子中发现多个文本,这将找到最后匹配的文本。此外,虽然您的答案给出了原始问题的可能解决方案,但它没有解释所遇到问题的观察行为。好的,转换为数组公式会更新所有内容,使其一致工作,正如您所期望的那样,但最终我需要能够在B列中的每个单元格中搜索A中的任何值,然后返回找到的字符串。如果公式只在找到第一项时返回一个值,那显然是行不通的。该公式如何适用于此?(我希望这与原来的问题没有太大的偏离)@Tock我添加了一个公式,可以满足你的要求。在将来,请询问你真正想要什么,而不是仅仅是部分描述的东西。您可以搜索XY问题以更好地理解该问题。好的,转换为数组公式会更新所有内容,使其一致地工作,正如您所期望的那样,但最终我需要能够在B列中的每个单元格中搜索A中的任何值,然后返回找到的字符串。如果公式只在找到第一项时返回一个值,那显然是行不通的。该公式如何适用于此?(我希望这与原来的问题没有太大的偏离)@Tock我添加了一个公式,可以满足你的要求。在将来,请询问你真正想要什么,而不是仅仅是部分描述的东西。您可以搜索XY问题,以便更好地理解该问题