excel

关注公众号 jb51net

关闭
软件教程 > 办公软件 > excel >

根据相似度做匹配! Excel超级筛选函数REGEXEXTRACT来了

脚本之家

今天跟大家分享下我们如何在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))))))

注意事项:

使用这个函数,大家需要注意2点,不然有可能会造成无法使用的情况

1. 如果你是WPS,请将REGEXEXTRACT替换为REGEXP,它们的名字不一样,用法是一样的

2. 查找值不要添加任何的标点符号,如果你的标点符号恰好是正则中的元字符,这个函数就无法使用了

推荐阅读:

Excel数据筛选完美搭档! FILTER函数+切片器吊打下拉菜单

快速筛选符合要求的用户! excel表格中用FILTER+REGEXP正则表达式进行高级筛选