Excel不完整企业信息匹配:精确/近似匹配公式需求
Excel企业名称/地址的精确+近似匹配解决方案
一、优先实现精确匹配
你已经用过VLOOKUP,换成XLOOKUP会更灵活,直接满足精确匹配优先的逻辑:
- 举个例子:假设List A的合并字段在
A2:A100,List B的合并字段在D2:D100,对应ID列是C2:C100 - 在List A的B2单元格输入公式:
用=XLOOKUP(A2,$D$2:$D$100,$C$2:$C$100,"无精确匹配",0)0参数强制精确匹配,找不到匹配项时返回“无精确匹配”,方便后续触发近似匹配逻辑。
二、近似匹配:按共同词汇+数字数量找最相似项
要实现基于共同内容的近似匹配,需要通过辅助列统计匹配度,再提取对应ID:
1. 给List B添加匹配度统计辅助列
在List B的E2单元格输入公式,统计当前行合并字段与List A当前单元格的共同词汇(含数字)数量:
=SUMPRODUCT(--ISNUMBER(SEARCH(TEXTSPLIT(D2," "),A2)))
TEXTSPLIT(D2," "):把List B的文本按空格拆分成单个词汇(数字也会被当作独立词汇)SEARCH(...,A2):检查每个词汇是否在List A的目标单元格中存在--ISNUMBER(...):将“存在”的结果转为1,“不存在”转为0SUMPRODUCT:求和得到共同词汇的总数量,数值越大说明匹配度越高
2. 提取最高匹配度的对应ID
在List A的C2单元格输入公式,优先使用精确匹配结果,无精确匹配时取List B中匹配度最高的ID:
=IF(B2<>"无精确匹配",B2,INDEX($C$2:$C$100,MATCH(MAX($E$2:$E$100),$E$2:$E$100,0)))
- 先判断精确匹配是否成功,成功则直接复用B列结果;失败则查找List B中E列最大值对应的ID
3. 计算匹配百分比
在List A的D2单元格输入公式,算出匹配内容的占比:
=IF(B2<>"无精确匹配",100%,(MAX($E$2:$E$100)/COUNTA(TEXTSPLIT(INDEX($D$2:$D$100,MATCH(MAX($E$2:$E$100),$E$2:$E$100,0))," ")))*100)
- 精确匹配直接返回100%;近似匹配用共同词汇数除以匹配项的总词汇数,转换为百分比
额外提示
- 如果List B中有多个相同最高匹配度的项,
MATCH会返回第一个出现的ID;若需要优先选择包含数字的项,可以给数字类词汇添加权重(比如在辅助列公式中给数字词汇额外加1分) - 批量处理辅助列可以用
BYROW函数,无需手动下拉:=BYROW($D$2:$D$100,LAMBDA(x,SUMPRODUCT(--ISNUMBER(SEARCH(TEXTSPLIT(x," "),A2))))) - 若文本中包含乱码或特殊字符,可先用
CLEAN函数清理后再进行拆分匹配
内容的提问来源于stack exchange,提问作者Chris Cokalis
相关产品推荐
相关产品推荐

