如何根据一组值查找某个值

如何根据一组值查找某个值

我有一列包含逗号分隔的用户列表。我想创建一个公式,该公式将查看一组唯一用户并返回与逗号分隔列表中的一个唯一值匹配的值。以下是示例:

在此处输入图片描述

请注意,用户 A 同时位于数据列和查找列中。用户 B 和用户 C 永远不会位于查找列中。

我尝试使用VLOOKUP近似匹配(TRUE),它几乎有效,但如果两个用户的名字相似,它可能会返回错误的结果。

答案1

您可以将 TEXTJOIN 与 FILTERXML 一起使用:

=TEXTJOIN(",",TRUE,XLOOKUP(FILTERXML("<a><b>"&SUBSTITUTE(F2,",","</b><b>")&"</b></a>","//b"),I:I,I:I,"",0))

这将返回匹配项。如果只有一个,则仅返回该匹配项。

在此处输入图片描述

答案2

您可以使用以下公式:

=TRANSPOSE(FILTER($J$2:$J$4,NOT(ISERROR(FIND($J$2:$J$4,F2)))))

基本上,我们会过滤查找列表,使其仅包含在“数据”中找到的那些项目。由于此过滤器可能会返回多个项目(如果数据中有多个查找名称),因此我们使用TRANSPOSE它来透视它并在同一行上返回每个匹配项:

在此处输入图片描述

编辑:

为了纠正有关误报的问题,请将逗号连接到查找项和数据:

=TRANSPOSE(FILTER($J$2:$J$4,NOT(ISERROR(FIND($J$2:$J$4&",",F2&",")))))

编辑2:

要仅选择第一个项目,请添加INDEX

=INDEX(TRANSPOSE(FILTER($J$2:$J$4,NOT(ISERROR(FIND($J$2:$J$4&",",F2&","))))),1)

相关内容