Excel 中的多重搜索公式

Excel 中的多重搜索公式

我正在尝试找到一个可以在一个单元格中搜索特定单词的公式。

我希望公式的结果是我选择的单词。

我举的例子是,如果一个单元格显示成分列表,另一个单元格显示过敏原列表。我需要公式来搜索成分列表并选择过敏原。

在此处输入图片描述

我知道我可以使用查找函数以便它返回一个结果然后连接结果,但一定有更简单的方法!

谢谢

答案1

如果您拥有引入了 TEXTJOIN 的 Office 365 Excel,则可以在数组公式中使用它:

=TEXTJOIN(", ",,IF(ISNUMBER(FIND( {"GLUTEN","PEANUTS"},C3)),{"GLUTEN","PEANUTS"},""))

作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。

这将迭代这两个名称并使用 Find 测试字符串。如果找到,则 Find 返回一个数字,否则返回错误。我们找到它返回数字的位置,然后第二个数组将向 TEXT JOIN 返回正确的值

在此处输入图片描述


但更好的做法是创建一个列出过敏原的表格:

在此处输入图片描述

然后您可以在 TEXTJOIN 公式中引用该列表,而不是在公式本身中维护它:

=TEXTJOIN(", ",,IF(ISNUMBER(SEARCH( ALLERGEN[ALLERGENS],C3)),ALLERGEN[ALLERGENS],""))

仍然是一个数组公式,我切换到SEARCH来处理大小写的差异。

在此处输入图片描述

现在,由于需要新的过敏原,因此可以将其添加到列表中,而无需更新配方。

答案2

在单元格 C6 中,您可以使用以下公式,

=MID(C3,FIND("Gluten",C3),LEN("Gluten"))&", "&MID(C3,FIND("Peanuts",C3),LEN("Peanuts"))

您可以在公式末尾添加以下内容来添加更多要搜索的过敏原:

&", "&MID(C3,FIND("Another Allergen",C3),LEN("Another Allergen"))

并根据需要重复。

当您列出可能不存在于成分中的过敏原时,您也可以对此进行错误证明:

=IFERROR(MID(C3,FIND("Gluten",C3),LEN("Gluten")),"")&", "&IFERROR(MID(C3,FIND("Peanuts",C3),LEN("Peanuts")),"")&", "&IFERROR(MID(C3,FIND("Another Allergen",C3),LEN("Another Allergen")),"")

因为这使用了 FIND,所以搜索模式区分大小写,所以您可能需要考虑将其交换为 SEARCH 函数,该函数仍然以相同的顺序采用相同的 2 个参数。

相关内容