根据简称查询全称太香了! wps中regexp+vlookup公式使用技巧


    粉丝求助SOS:如何根据简称,在数据源中将全称查找出来?
    我们用一个例子,来做说明。如下图所示:A列是某些国家的全称,也就是数据源。C列是已知的国家名称的简称,我们想要通过C列的简称,将A列中对应的全称查找出来,显示在D列。
    
    我们用REGEXP正则表达式函数+VLOOKUP经典查找函数,组合使用,轻松拿捏这个问题。
    首先输入REGEXP正则表达式函数:
    =REGEXP(C2,"()")
    
  • "()":是正则表达式部分。其中 () 表示一个空捕获组,即括号内无匹配规则。省略第三参数(匹配模式),默认 0(提取模式)。

    
    正则表达式 "()" 的核心作用:
    () 在正则中用于分组捕获,但内部为空时,实际匹配的是字符串中的空位置。例如:字符之间的间隙。
    以C2单元格为例:捕获到的位置就是以下4个位置,即字符与字符之间的间隙处。
    
    继续完善公式:
    =REGEXP(C2,"()",2,"*\1")
    我们由REGEXP函数默认的“提取”模式,更改为“替换”模式,即设置第3参数为“2”(替换模式)。
    替换为:"*\1"。
    
  • \1:表示捕获到的分组1(也就是代表字符之间的所有间隙位置),即第2参数 () 捕获到的内容。
  • *\1:在\1前面加上一个*,表示在分组1前面加上一个*,即在字符之间的所有间隙之前批量加上一个*。

    
    所以替换前与替换后的效果如下图所示:
    替换前:字符之间的间隙
    
    替换后:在间隙处加上了*
    
    而我们都知道“*”在Excel中表示“通配符”的意思,即代表任意的多个字符,
    所以在“俄罗斯”的每个字符的前面或后面都可以拥有任意字符的可能性,当然也包括了“俄罗斯联邦”的这种可能。
    综上所述,最后嵌套VLOOKUP查询即可:
    =VLOOKUP(REGEXP(C2,"()",2,"*\1"),A:A,1,0)
    查询REGEXP函数的返回结果,在A:A区域中,第1列位置所对应的数据(全称)。
    
    
    推荐阅读:万能文本函数REGEXP! wps表格中混乱数据处理除了textsplit函数用它也不错