Excel如何实现模糊近似匹配!

最近,不止一个老铁后台问我,如何实现简称匹配全称的问题,其实也就是普遍的模糊匹配问题!今天就系统讲一下!

常见问题01 | 全称找简称

=LOOKUP(1,0/FIND($D$2:$D$6,A2),$D$2:$D$6)

思路说明:

1、全称找简称的思路,其实也是把全部简称都在当前查找的全称中查找一遍,这个查找常用FIND函数处理,FIND(查什么,在哪里查)

2、FIND的结果,如果找到返回对应简称在全称中的位置,否则返回错误值
这种情况下,需要你有一定套路经验,基本考虑LOOKUP这个强大的查找函数!
拓展阅读(点击阅读):


本文由“壹伴编辑器”提供技术支持
常见问题02 | 简称找全称(相对匹配上)
=VLOOKUP("*"&C2&"*",A:A,1,)

简要说明:

1、这个使用大家最熟悉的VLOOKUP即可解决,这里使用的就是模糊匹配,但是不是近似匹配额,不要混淆
2、这里的星号(*),是通配符,表示任意0个或者多个字符!其中本质就是包含关键的意思了!
拓展阅读(点击阅读):


本文由“壹伴编辑器”提供技术支持
上面的数据有的相对来说,还算是规则的,有包含的关系,如果简称过于奇葩,没有连续对应的,可能就不行了,但是也不是无解!
常见问题03 | 相识度匹配
▼看上去有点小复杂,但是乱序好用的很
=INDIRECT("A"&RIGHT(MAX(MMULT(ISNUMBER(FIND(MID(C6,TRANSPOSE(ROW(INDIRECT("1:"&LEN(C6)))),1),$A$2:$A$6))*1,ROW(INDIRECT("1:"&LEN(C6)))^0)/1%%+ROW($A$2:$A$6)),3))
公式比较复杂,大部分同学选择放弃,直接使用是明智的,如果你是函数爱好者,可以听听下面的解析,虽然看完也不一定保证全部懂,但是我尽力哈!

公式解析:

1、=MID(C2,TRANSPOSE(ROW(INDIRECT("1:"&LEN(C11)))),1)
该部分是把我们关键词诸位拆开,为什么写这么复杂,而不是MID(C2,COLUMN(A1),1),右拉??因为我们要的是内存数组,方便我们下一步匹配!
ROW(INDIRECT("1:"&LEN(C11))) 可以根据关键的长度,自动拆分,不会多出空格,这点在这里分重要,不能使用一般ROW(1:99)直接代替!否则空值查出来会增加权重,影响结果!
2、FIND部分
查找关键词中每个字在全称中是否出现,出现1,未出现0
3、MMULT部分
MMULT矩阵相乘,就是把关键词的每个字在各个全称中出现的次数累加起来,比如这里的第15行,4个字都在其中出现,就是4,其他没有出现就是0
这个案例中,没有交叉包含的,否则可能出现关键词的部分字在其他全称中也出现,这种情况下,我们要的就是出现次数最多的!
4、出现次数最多的-MAX+权重
我们想要4对应的行号,其实就是出现关键词最多的全称的行高,那么我们可以把这个最大值,整体扩大10000(/1%%)倍,不影响他们本身的比较,然后加上行高!这样我们取出最大值的同时,也有了行号,在尾部!
5、使用RIGHT获取行号+INDIRECT获取单元格值
OK!关于相识度匹配我们就拆解到这里,这种算法是单字的,实际文本的相识度算法,是非常复杂的!
本文由“壹伴编辑器”提供技术支持
(0)

相关推荐