Excel超级筛选来了!根据相似度做匹配,让效率提升90%
发布时间:2025-08-11 11:26 浏览量:1
今天跟大家分享下我们如何在Excel中实现相似度匹配,这也是一个学员提取的问题,最简单的方法就是利用PQ之前发过,但是无奈WPS用不了,今天新的解决方法来了
公式:=REGEXEXTRACT(A2,"["&D2&"]",1)
在这列D2是查找值,我们查找值的前后连接方括号作为正则的匹配规则,它就表示会在数据源中匹配【ABC2】这四个字符,如果可以匹配到就会返回对应的字母,具体效果如下图所示
得到了字母就可以使用COUNTA函数对这个区域进行计数,来得到数据提取的个数
公式:=COUNTA(REGEXEXTRACT(A2,"["&D2&"]",1))
上面演示的仅仅是一个结果,我是要对整列的数据进行比较,所以就需要对这个公式进行扩展,让他对一整列的数据进行计数,就可以考虑使用BYROW,它的作用是将函数应用于整行中,结果如下图所示
公式:=BYROW(A2:A11,LAMBDA(X,COUNTA(REGEXEXTRACT(X,"["&F2&"]",1))))
这个公司的关键点就是将A2:A11这区域代入到正则函数中,对整行数据进行拆分计数,在当前的表格中最大的数据,就是我们需要的最相似的数据
公式:=FILTER(B2:B11,MAX(BYROW(A2:A11,LAMBDA(X,COUNTA(REGEXEXTRACT(X,"["&E2&"]",1)))))=BYROW(A2:A11,LAMBDA(X,COUNTA(REGEXEXTRACT(X,"["&E2&"]",1)))))
公式虽然比较长,但是并不难理解,主体是一个FILTER函数来做数据筛选,我们使用MAX函数提取计数结果来得到最大值,最大值对应的就是最相似的数据
这个函数想要看懂还是需要有一定的基础的,如果你看不懂也没关系,粘贴下方公式直接使用,只需要修改2处即可
公式=LET(y,A2:A11,x,B2:B11,FILTER(x,MAX(BYROW(y,LAMBDA(X,COUNTA(REGEXEXTRACT(X,"["&E2&"]",1)))))=BYROW(y,LAMBDA(X,COUNTA(REGEXEXTRACT(X,"["&E2&"]",1))))))
1. A2:A11修改为你表格的查找列
2. B2:B11修改为你的表格的结果列
使用这个函数,大家需要注意2点,不然有可能会造成无法使用的情况
1. 如果你是WPS,请将REGEXEXTRACT替换为REGEXP,它们的名字不一样,用法是一样的
2. 查找值不要添加任何的标点符号,如果你的标点符号恰好是正则中的元字符,这个函数就无法使用了
想要提高工作效率,不想再求同事帮你解决各种Excel问题,可以了解下我的专栏,WPS用户也能使用,讲解了函数、图表、透视表、数据看板、AI做表格等功能