桓楠百科网

编程知识、经典语录与百科知识分享平台

Excel – 若要 vlookup 能够按身份证号码匹配,原来还有玄机

前一篇推文中我们教了大家如何用 vlookup 函数查找带通配符的单元格,立刻引起了读者的反响。


有些读者表示,在工作中还遇到过各种稀奇古怪的问题,比如 vlookup 突然失灵了,数据明明正确就是查找不出结果。


比如下面这个案例。


案例:


下图 1 中的 A、B 列为某公司员工的身份证号,请根据 D 列中列出的身份证号,在 E 列中查找出对应的姓名。


效果如下图 2 所示。


解决方案:


乍一看,这么简单的需求没什么好纠结的,vlookup 公式直接查就可以了。


1. 在 E2 单元格中输入以下公式 --> 下拉复制公式:

=VLOOKUP(D2,A:B,2,0)


但是很奇怪,找不到对应的姓名。而我用 Ctrl+F 去查找了一下,D 列的身份证号在 A 列又千真万确存在,这到底是怎么回事?


为了在 Excel 中完整显示 18 位的身份证号码,必须将单元格格式设置为文本,这样在数据录入的过程中,就可能会存在一些不可见的字符。


为了能够使两边的文本能够匹配上,通常可以尝试以下几种做法:

  1. 用 trim 函数去除两列身份证号码的前后空格,之后再用 vlookup 查找。
  2. 如果 trim 不管用,可以尝试用 clean 函数去除一些不可见的特殊符号
  3. 如果上述方法还是不行,可以在查找单元格前后加上 "*",用 & 符号连接起来。


有关 trim 和 clean 函数的详解,请参阅 Excel 数据源清洗,用这两个函数批量删除空格和换行


我们直接来试一下第三种用法。


2. 选中 E2:E5 区域,输入以下公式 --> 按 Ctrl+Enter 回车:

=VLOOKUP("*"&D2,A:B,2,0)


现在所有姓名都成功查找出来了。这是什么原理呢?


  • "*" 是通配符,用 & 连接符号跟 D2 连在一起,表示 D2 前含有任意字符的单元格;
  • 如果前面加 "*" 找不到,可以试下前后都加,即 "*"&D2&"*";
  • 如果还是找不到,可以再叠加清洗函数,比如 "*"&CLEAN(D2)&"*"


以下就是最终效果。


很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。


控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言