答案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 个参数。