在上篇内容中我们说到了用excel提取身份证号码中的户籍地址、出生日期、年龄、生肖、星座等内容,今天我们书接上回,继续带大家学习excel提取身份证信息的其他操作!

4、生日提醒

生日提醒的问题,作者觉得要分两部分来说。

(1)有的公司的管理比较人性化,可能每个月都会给当月过生日的员工发一些小礼品,但如果这些小礼品都是生日当天发送,那这一年下来,就是一个很费精力的事情,所以就在每个月中选一天,给本月过生日的员工一起庆生。这个时候,我们可以使用EXCEL进行如下操作:

B43单元格函数:

=IF(--MID(B2,11,2)=MONTH(TODAY()),"本月生日","非本月生日")

讲到现在,想必同学们都已经对“--MID(B2,11,2)”函数用法和意义了如指掌了吧?!它用于返回生日的月份,然后与今天的月份作对比,如果相等就返回“本月生日”,否则就返回“非本月生日”,一目了然。

(2)对于重要人物的生日提醒。关于类似的提醒,作者建议大家一定要做到精确到日,类似“倒计时”的提醒,例如下面的示范:

B45单元格函数:

=IF(--TEXT(MID(B2,11,4),YEAR(TODAY())&"-00-00")<=TODAY(),--TEXT(MID(B2,11,4),YEAR(TODAY())+1&"-00-00")-TODAY(),--TEXT(MID(B2,11,4),YEAR(TODAY())&"-00-00")-TODAY())&"天后庆生"

这个函数看着比较复杂(好吧,我承认里面有一段确实复杂),但是思路其实很简单,天数=IF(本年生日日期<=今天日期,次年生日日期-今天日期,本年生日日期-今天日期)。

本年生日日期=--TEXT(MID(B2,11,4),YEAR(TODAY())&"-00-00")

次年生日日期=--TEXT(MID(B2,11,4),YEAR(TODAY())+1&"-00-00")

MID(B2,11,4)提取月份日期就不多说了,TEXT函数的第二参数是代表需要转换的格式表达式,这个参数是可以有函数参与的,例如本例,TODAY()为2019-9-17,YEAR(TODAY())就是2019,YEAR(TODAY())&"-00-00"这样的表达的格式就是"2019-00-00"(今年的生日日期),同理YEAR(TODAY())+1&"-00-00"代表"2020-00-00"的格式(次年的生日日期),用这个方式就确定了还有多少天庆生。

当然同学们也可以使用函数:=DATE(YEAR(TODAY()),MID(B2,11,2),MID(B2,13,2))来得到身份证中的生日日期,上例就是为了给大家一个其他的函数应用思路,实际工作中,会哪个就用哪个吧。

三、性别判断及延伸思考

相对于出生日期的话题,性别判断的话题就显得有点简单了。身份证的编码规则,第15~16位,是各个地区户籍公安局的编码,这个我们就不多说了。第17位代表的是性别的代码,奇数代表男性,偶数代表女性。

B5单元格函数:

=IF(MOD(MID(B2,17,1),2)=1,"男","女")

MID(B2,17,1)提取身份证第17位的代码,用MOD函数得到除以2的余数,再用IF函数判断余数是否为1,为1则为奇数返回“男”,否则为“女”(一个整数除以2的余数,除了1就是0)。说到这里,我们可以额外多说一句,在EXCEL函数中其实是有专门判断奇偶性的函数——ISODD函数、ISEVEN函数。

利用这两个函数也是可以判断性别的,如下图(注意两个函数的逻辑返回值所对应的“男”、“女”):

当然EXCEL从来都是一题多解的,也可以用VLOOKUP函数的方式来做,同学们会哪个,擅长哪个,就随大家方便吧,解决问题就好。

写了这么多的内容,有的同学可能会说了,我们这样一直曝光别人的身份证,应该不太好吧?!

四、判断身份证号的真伪

在很多情况下,我们都有可能只看到身份证号,而看不到身份证原件,即便看到了身份证原件,没有专业的身份证读卡机我们也不好判断是真是假。那么本系列最后一部分内容我们就来学习如何使用EXCEL判断身份证号的真伪。

(1)首先身份证的位数是我们第一步判断身份证号录入是否正确的标准。

这是最基本的,如果位数都不对,那就别谈其他的了。

(2)第18位的效验码

身份证号的第18位码是一个计算结果值,是用前17位代码通过复杂的一个计算得到的,了解了这个计算我们就可以验证身份证号码的真伪了。

计算步骤:

★前17位号码,每一位乘对应位数的系数,再相加求和,对应码如下:

★将得数除以11求余,余数和下面的对比表进行对比,对应的上则为“真”,否则为“假”。

就是这么简单的两步而已,但是难点就在于我们要分别取出各个位上的值,如果用辅助列做,这个问题很好解决,今天我们来学习不使用辅助列的做法,如下:

问题揭晓,此身份证号码是假的,大家可以用真实的身份证号码验证一下函数。

B5单元格函数:

{=VLOOKUP(MOD(SUM(MID(B2,ROW(1:17),1)*{7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2}),11),{0,1;1,0;2,"X";3,9;4,8;5,7;6,6;7,5;8,4;9,3;10,2},2,0)=RIGHT(B2)}

输入完成后,按数组函数的结束键CTRL+SHIFT+ENTER三键结束。

函数解析:

MID(B2,ROW(1:17),1)利用数组的方式,分别得到身份证前17位的数字,形成一个常量数组,{"5";"1";"1";"5";"0";"2";"1";"9";"9";"1";"0";"3";"2";"2";"3";"1";"8"}。

然后和{7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2}相乘再用SUM求和,通过MOD(值,11)得到余数,再用VLOOKUP函数在{0,1;1,0;2,"X";3,9;4,8;5,7;6,6;7,5;8,4;9,3;10,2}数列中索引出对照码;最后和RIGHT(B2)(如果LEFT函数和RIGHT函数的第2参数是1,可以省略)比较,返回逻辑值TRUE就是真身份证号,FALSE则是假身份证号。

***编后语***

我知道网络上有很多关于身份证号的文章,但是每次写都会有不同的感受和新的内容出来,比如第一部分我们使用SUBSTITUTE函数精准提取市、区县,又如生日提醒里面的TEXT函数的使用方式,更比如最后的效验码问题,这些都不是不好理解的东西。

excel函数应用:如何用数位函数分段提取身份证信息 下篇相关推荐

  1. 【Excel】提取身份证信息

    身份证信息具有很强的标识性. 在excel中能够快速的根据身份证信息读取相应的信息,根据 来源于百度:现在通用的身份证号码有15位的和18位的,现在通用的是18位的,身份证各位数字都有其含义,15位身 ...

  2. Excel提取身份证出生日期②

    user表中的18位身份证,提取出生日期. 不考虑15位身份证号,场景二会提及15位时的情况. img 目标 提取身份证信息列所有用户的出生日期. 解决方案一 用Ctrl+E提取填充. 第一步:将D2 ...

  3. office(Excel)里面如何提取身份证中的出生日期

    在办公处理数据的时候最常用到的就是Excel表格,有时候处理跟个人信息有关的数据时就有需要提取个人的出生日期,以我常用的speedoffice为例说明,我们通过以下步骤就能实现,一起来学习吧. 1,新 ...

  4. 合并excel文件 C语言,如何用VBA函数合并多个文件

    Excel合并多个文件 Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Applica ...

  5. Excel:如何用vlookup函数进行两个表格数据的对比。

    Excel作为职场的重要办公软件,强大的功能给我们提供了很多便利的地方.那么Excel 如何用vlookup函数进行两个表格数据的对比呢,如何从一堆数据中匹配出自己需要的值呢. 工具/原料 Excel ...

  6. matlab可以拟合分段函数吗,如何用matlab拟合出分段函数

    你要知道,你要拟合的是一个分段函数,这本身就不是一般的连续光滑函数. nlinfit之所以要有初值这一项,就是考虑到在某些变态的情况下,无法找到最小二乘函数的最小值,可能是一个局部的最小值,也可能根本 ...

  7. R语言读取excel文件实战(read.xlsx函数、read_excel函数、read.xlsx函数、Write函数)

    R语言读取excel文件实战(read.xlsx函数.read_excel函数.read.xlsx函数.Write函数) 目录 R语言读取excel文件实战(read.xlsx函数.read_exce ...

  8. 如何用数学函数去理解机器学习?

    本文主要分享了如何基于数学函数原理去理解机器学习的本质,并简要介绍了机器学习的过程. 近期也是在做项目的过程中发现,其实AI产品经理不需要深入研究每一种算法,能了解机器学习的过程,这其中用到哪些常用算 ...

  9. excel函数大全_让你的EXCEL工作效率翻倍的函数大全

    详细的函数说明和应用实例可查看我上传的<EXCEL快速学习教程视频>对应各类函数教程 常用函数大全 使用函数:公式选项卡>函数库>插入函数.常用函数.最近使用函数.财务.逻辑. ...

最新文章

  1. NRM: 地球上细菌和古菌的生物膜丰度
  2. 弦截法c语言程序,高数介质定理——弦截法求根代码实践(C语言)
  3. Spring和MyBatis的整合
  4. 软件测试 学习之路 linux基础命令 (二)
  5. python所有软件-Python和pip,列出可用的软件包的所有版本?
  6. parquet格式_数据工程101:揭开Hadoop数据格式的神秘面纱:Avro,ORC和Parquet
  7. css环形进度条clip,clip实现圆环进度条
  8. 【回眸】安装Hightec后如何导入源码及相关环境配置
  9. SXT分布式缓存技术公开课的观后感
  10. 韩非子《五蠹》全文及译文
  11. Cutting Game
  12. Win10中实时网速显示
  13. c1语言水平要多久,对普通人来说,一般需要多长时间才能学会一门外语?
  14. android集成twitter登录
  15. Android毛玻璃效果实现
  16. Qt tableview
  17. Intelligent Parking Building
  18. Python异常及处理
  19. 怎么去禁止QQ的安全组件,来解决QQ和360的冲突问题
  20. 实习总结1-小试牛刀(面试经历1)

热门文章

  1. win10 vmware 磁盘映射 位置不可用
  2. 只需4步微信自动加满5000精准粉丝
  3. Mt. Gox冷钱包转出价值1.65亿美元BTC及BCH
  4. 计算机电缆设计规范,综合布线规范有哪些?
  5. Tectonic 1.7升级了容器编排平台,提供了新的监控功能并支持微软Azure
  6. 矩阵光学 matlab,矩阵光学.doc
  7. i386 i586 i686 的意思
  8. 网络——参考模型之ISO/OSI和TCP/IP
  9. 南京去年2万多张驾驶证过期未审-驾驶证-过期
  10. Windows+手机,来抓免费(Gratuitous)ARP~