如何在Excel中匹配存在包含关系的产品名字段?求函数示例
纯产品名与带规格产品名的匹配方案
假设数据结构
- 表1(纯产品名表):A列存储纯产品名(如
Tylenol) - 表2(带规格产品表):B列存储带规格的产品名(如
Tylenol 100mg 100s),C列存储需要匹配返回的关联数据(如价格、库存)
1. VLOOKUP+通配符匹配(兼容多数Excel版本)
在表1的B2单元格输入公式,下拉填充即可:
=IFERROR(VLOOKUP(A2&"*", 表2!$B:$C, 2, FALSE), "无匹配")
- 逻辑:
A2&"*"匹配以纯产品名开头的任意带规格名称 表2!$B:$C是带规格产品名及关联数据的区域2表示返回区域中第2列的内容(即表2的C列)FALSE确保只匹配符合通配符规则的条目,找不到时返回无匹配
如果纯产品名可能出现在带规格名称的任意位置,调整通配符位置:
=IFERROR(VLOOKUP("*"&A2&"*", 表2!$B:$C, 2, FALSE), "无匹配")
2. XLOOKUP匹配(Excel 365/2021及以上版本推荐)
XLOOKUP语法更直观,支持双向通配符:
=XLOOKUP("*"&A2&"*", 表2!$B:$B, 表2!$C:$C, "无匹配")
- 逻辑:
"*"&A2&"*"匹配包含纯产品名的任意带规格名称 - 最后一个参数
"无匹配"是找不到时的返回值,可按需修改
3. 判断是否存在(仅需确认匹配状态)
如果不需要返回关联数据,仅判断纯产品名是否在表2中,用COUNTIF更高效:
=IF(COUNTIF(表2!$B:$B, "*"&A2&"*")>0, "存在", "不存在")
- 逻辑:COUNTIF统计表2中包含纯产品名的条目数量,大于0则说明存在
4. INDEX+MATCH组合匹配(灵活度更高)
适合需要自定义匹配规则的场景:
=IFERROR(INDEX(表2!$C:$C, MATCH(A2&"*", 表2!$B:$B, 0)), "无匹配")
- MATCH找到符合通配符规则的第一个条目位置,INDEX返回对应位置的关联数据
注意事项
- 若纯产品名存在多余空格,用
TRIM(A2)替换公式中的A2,避免匹配失败,例如:VLOOKUP(TRIM(A2)&"*", ...) - 如果表2中有多个匹配条目,上述函数默认返回第一个匹配结果,需返回其他结果可结合
SMALL等函数调整
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

