为什么逗号分隔或命名范围搜索()函数在Excel中不起作用

为什么逗号分隔或命名范围搜索()函数在Excel中不起作用,excel,excel-formula,Excel,Excel Formula,我想在单元格中搜索文本,在Excel 2016中查找预定义的关键字。我正在使用SEARCH()函数。无论我做什么,只要我输入多个“查找文本”我的搜索函数返回“#值!”错误 我的“in_text”是表列中名为“Message”的单元格。文本是“预订新政时异常,错误:未知错误(0)”,我正在搜索的关键字是{“成功”、“未知”、“失败”} 我甚至像这样使用了命名范围 =SEARCH(Test,Q_DTL_GetAll__3[@MESSAGE]) 每次我得到“#VALUE!”错误时,我都希望单词“Un

我想在单元格中搜索文本,在Excel 2016中查找预定义的关键字。我正在使用SEARCH()函数。无论我做什么,只要我输入多个“查找文本”我的搜索函数返回“#值!”错误

我的“in_text”是表列中名为“Message”的单元格。文本是“预订新政时异常,错误:未知错误(0)”,我正在搜索的关键字是{“成功”、“未知”、“失败”}

我甚至像这样使用了命名范围

=SEARCH(Test,Q_DTL_GetAll__3[@MESSAGE])

每次我得到“#VALUE!”错误时,我都希望单词“Unknown”在文本中的位置。

问题是,如果它只能包含这些单词中的一个,那么如果它不包含其中一个关键字,则搜索函数将返回一个错误。使用IFERROR将错误(未找到的值)设置为0,然后获取最大值以查找找到的单词的位置(如果有)。如果未找到任何值,则结果仅为0:

=MAX(INDEX(IFERROR(SEARCH({"Success","Unknown","Failed"},Q_DTL_GetAll__3[@Message]),0),))

问题是,如果它只能包含这些单词中的一个,那么当它不包含其中一个关键字时,搜索函数将返回一个错误。使用IFERROR将错误(未找到的值)设置为0,然后获取最大值以查找找到的单词的位置(如果有)。如果未找到任何值,则结果仅为0:

=MAX(INDEX(IFERROR(SEARCH({"Success","Unknown","Failed"},Q_DTL_GetAll__3[@Message]),0),))

您可以使用正常输入的功能:

=AGGREGATE(14,6,SEARCH({"Success","Unknown","Failed"},Q_DTL_GetAll__3[@MESSAGE]),1)
您的
搜索
正在返回一个值数组。在给定情况下:

{#VALUE!,42,#VALUE!}

因此,您需要某种只返回非错误值的方法<代码>聚合可以做到这一点


此公式将返回一个
#NUM错误。您可以按照自己的意愿进行处理。

您可以使用正常输入的功能:

=AGGREGATE(14,6,SEARCH({"Success","Unknown","Failed"},Q_DTL_GetAll__3[@MESSAGE]),1)
您的
搜索
正在返回一个值数组。在给定情况下:

{#VALUE!,42,#VALUE!}

因此,您需要某种只返回非错误值的方法<代码>聚合
可以做到这一点


此公式将返回一个
#NUM错误。您可以随意处理。

是否使用Ctrl+Shift+Enter组合键?此外,您的公式将为每个试验报告一个结果,因此您不能仅使用单个单元格。您使用的是Ctrl+Shift+Enter吗?此外,您的公式将为每个试验报告一个结果,因此您不能仅使用一个单元格。我认为搜索函数是迭代的,搜索所有关键字。@Priyam它是迭代的,但任何结果的错误都意味着函数返回最终结果的错误。这就是为什么你必须使用iFr.Pryym捕获任何错误,如果这个帖子已经回答了你的问题,考虑把它标记为这样。这起作用了。我认为搜索函数是迭代的,搜索所有关键字。@Priyam它是迭代的,但任何结果的错误都意味着函数返回最终结果的错误。这就是为什么你必须使用iFr.Pryym捕获任何错误,如果这个帖子已经回答了你的问题,考虑把它标记为这样。