利用regexp函数如何实现近似匹配

  1. 借鉴龙总的“根据不连续简称查全称”,利用regexp函数进行近似匹配;

  1. 现在的问题是:直接利用一个公式不能一步到位,要先查找到全称,再利用xloolup匹配到数量,相当于用了辅助列。

  1. 请问这个公式如何修改才能一步到位?

名称

数量

近似值

直接查找出错

先查找全称

再匹配到数量

中国船舶重工集团公司

56

北大光华

=XLOOKUP(TOCOL(MAP($A$72:$A$79,LAMBDA(x,REGEXP(x,".*"&REGEXP(C72,"(.)",2,"\1.*")))),2),a2:a4,b2:b4)

=TOCOL(MAP($A$72:$A$79,LAMBDA(x,REGEXP(x,".*"&REGEXP(C72,"(.)",2,"\1.*")))),2)

=XLOOKUP(f2,$a$2:$a$4,$b$2:$b$4)

中国科技大学

48

中船重工

北京大学光华管理学院

65

中科大

安徽省
浏览 98
2
6
分享
6 +1
11
2 +1
全部评论 11
 
袁振涛
=LET(reg,".*"&REGEXP(C1,"(.)",2,"\1.*"),result,REDUCE("",$A$1:$A$6,LAMBDA(x,y,IF(REGEXP(y,reg,1),y,x))),VLOOKUP(result,A:B,2,FALSE))
· 山东省
回复
 
千叶
=MAP(AD2:AD9,LAMBDA(X,XLOOKUP(CONCAT("*"&REGEXP(X,".")&"*"),$AB$2:$AB$9,$AC$2:$AC$9,,2))) 原理是XLOOKUP的第五参数可以通配符查找, 用正则提取出近似值的单值, 然后前后连接上*,在查找 不用MAP =XLOOKUP(CONCAT("*"&REGEXP(AD2,".")&"*"),$AB$2:$AB$9,$AC$2:$AC$9,,2))
· 江西省
回复
猜不透的外星人
谢谢大佬的精彩回复!
· 安徽省
回复
 
Boyuan
=XLOOKUP(TOCOL(MAP($A$72:$A$79,LAMBDA(x,REGEXP(x,REGEXP(C72,"(?)",2,".*")))),2),$A$72:$A$79,$B$72:$B$79)
· 河南省
回复
猜不透的外星人
谢谢大佬的精彩回复!
· 安徽省
回复
 
Boyuan
=XLOOKUP(TOCOL(MAP($A$2:$A$4,LAMBDA(x,REGEXP(x,".*"&REGEXP(D2,"(.)",2,"\1.*")))),2),$A$2:$A$4,$B$2:$B$4)
· 河南省
回复
猜不透的外星人
谢谢!但还是不行!
· 安徽省
回复
 
马成功老师
马成功老师

2024年3月优秀创作者

你写的这函数,我看都看不懂。
· 北京
回复
猜不透的外星人
是龙逸凡版主写的,我就是想借鉴一下,但不能一步到位,还要加辅助列!
· 安徽省
回复
 
马成功老师
马成功老师

2024年3月优秀创作者

能把这些函数写出来,已经非常不错了,膜拜一下
· 北京
回复