You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel多列姓名部分匹配查询公式实现咨询

Excel姓名部分匹配公式实现方案

两列匹配需求(A列匹配B列,对应值返回C列)

需求说明:A列为「姓氏, 名字」格式的完整姓名,B列为零散名字,两列排序无对应关系,只要B列内容是A列对应行内容的子串,就把匹配到的B列值返回到C列。

适用Excel 365/2021及以上版本公式(C1单元格输入,下拉填充)

=IFERROR(FILTER(B:B,ISNUMBER(SEARCH(B:B,A1))),"无匹配")

适用旧版Excel兼容公式(C1单元格输入,下拉填充,B$1:B$4替换为你实际的B列数据范围)

=IFERROR(LOOKUP(1,0/ISNUMBER(SEARCH(B$1:B$4,A1)),B$1:B$4),"无匹配")

三列匹配需求(A列匹配B、C列,对应值返回D列)

需求说明:A列为「姓氏, 名字」格式的完整姓名,B列为姓氏列、C列为名字列,要求A列内容同时匹配到对应行B列的姓氏和C列的名字(部分匹配即可),就把匹配到的A列值返回到D列。

适用Excel 365/2021及以上版本公式(D1单元格输入,下拉填充)

=IFERROR(FILTER(A:A,ISNUMBER(SEARCH(B1,A:A))*ISNUMBER(SEARCH(C1,A:A))),"无匹配")
如果需要返回所有匹配结果用分隔符拼接,可使用:
=TEXTJOIN("、",TRUE,FILTER(A:A,ISNUMBER(SEARCH(B1,A:A))*ISNUMBER(SEARCH(C1,A:A)),"无匹配"))

适用旧版Excel兼容公式(D1单元格输入,下拉填充)

=IFERROR(INDEX(A:A,MATCH("*"&B1&"*"&C1&"*",A:A,0)),IFERROR(INDEX(A:A,MATCH("*"&C1&"*"&B1&"*",A:A,0)),"无匹配"))

注意事项

  • 公式中的整列引用(如A:A、B:B)可以替换为实际数据范围(如A$1:A$100),避免不必要的性能损耗
  • 如需区分大小写匹配,将公式中的SEARCH函数替换为FIND即可
  • 示例公式默认返回第一个匹配到的结果,如有多匹配需求可基于365版本的FILTER+TEXTJOIN组合调整

内容的提问来源于stack exchange,提问作者Damodar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:54:04