Excel 搜索字符串,然后根据匹配结果从列表中返回一个值

Excel 搜索字符串,然后根据匹配结果从列表中返回一个值

我在一个表(艺术家)中有一个值列表,然后我想找到部分匹配项,用于从单独的表中填充第二个值(流派)。如果找不到匹配项,则将字段留空,例如

可搜索值和结果值 | 艺术家 | 流派 | | -------- | -------------- | | Nick Cave | | | Kylie Minogue | | | Carter USM | | | Queen | | | Smiths | |

流派结果查找表 | 艺术家 | 流派 | | -------- | ----------- | | Cave | Alternative | | Minogue | Trash | | USM | Punk | | Smiths | Alternative |

将填充第一个表 | 艺术家 | 流派 | | -------- | ----------- | | Nick Cave | Alternative | | Kylie Minogue| Trash | | Carter USM | Punk | | Queen | | | Smiths | Alternative |

在此处输入图片描述

答案1

另一个可能的解决方案:

=IFERROR(INDEX($B$10:$B$13,MATCH(TRUE,SEARCH($A$10:$A$13,A2)>0,0)),"")

艺术家

如果您的数据和查找表位于不同的列中,则可以使用扩展范围,但使用整个列作为范围会减慢公式速度,因此不建议这样做。
我添加了空白文本$E:$E&"",以便结果中不显示零。

 =IFERROR(INDEX($E:$E&"",MATCH(TRUE,SEARCH($D:$D,A2)>0,0)),"")

艺术家2

答案2

尝试下面的公式。它用空格字符分割艺术家的名字,然后查找姓氏(名字的最后一部分)。如果名字中没有空格字符,它会按原样返回名字。然后它在查找表中搜索值。如果找到,它会返回流派。如果没有,则显示空白值。

=XLOOKUP(TEXTAFTER(A2," ",,1,0,A2),$A$10:$A$13,$B$10:$B$13,"",0)

调整公式以适合您的工作簿/范围。

相关内容