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

news2024/12/26 13:15:13

在上篇内容中我们说到了用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函数的使用方式,更比如最后的效验码问题,这些都不是不好理解的东西。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Reids的BigKey和HotKey

1.什么是BigKey和HotKey 1.1.Big Key Redis big key problem&#xff0c;实际上不是大Key问题&#xff0c;而是Key对应的value过大&#xff0c;因此严格来说是Big Value问题&#xff0c;Redis value is too large (key value is too large)。 到底多大的value会导致big key问…

各行业执法图传系统建设建议(华脉智联内参二)

各行业执法图传系统建设建议 让执法透明&#xff0c;不断提高执法工作效能 题记&#xff1a;为实现执法过程中的证据固定与执法场景记录&#xff0c;采用照相机、录音笔或固定监控等传统手段进行取证一直是最本源的需求。随着时代的变迁&#xff0c;传统的手段取证已无法满足完…

知识图谱构建:py2neo案例100个知识点应用

连接到 Neo4j 数据库执行一条简单的 Cypher 查询从查询结果中提取节点和关系插入一个新节点并与另一个节点建立关系根据标签查找节点根据属性查找节点根据关系查找节点在事务中执行多条查询使用索引查找节点使用约束确保唯一性删除节点和关系使用 py2neo.ogm 在 Python 中创建对…

访问学者申请要求及各国情况

访问学者申请要求及各国情况&#xff0c;下面就随知识人网小编一起来看一看。一、访问学者申请要求1、自身条件&#xff1a;访问学者主要是参看申请人当前的工作背景&#xff0c;专业背景以及科研背景等。在职群体申请访学需要具备本科学历和学位。此外&#xff0c;最重要的就是…

2023年,开挖电商这座金矿,有飞项这个协同工具就够了

2023年电商潜力怎样&#xff1f;据Morgan Stanley 研究&#xff0c;全球电商渗透还未见顶&#xff0c;物流发展、移动设备普及和市场拓展等因素仍然有利于电商发展&#xff0c;长期来看仍有增长空间&#xff0c;当前3.3万亿美元的电商市场规模有望在2026年增长到5.4万亿。 如何…

测试的准入准出

测试的准入准出 测试的准入住处是指什么情况下可以开始当前版本的测试工作&#xff0c;什么情况下可以结束当前版本的测试工作。不同项目、不同公司的测试准入准出标准都会有所不同。下面介绍一些通用的测试准入准出标准。 测试准入标准如下&#xff1a; (1)开发编码结束&#…

webpack概念

webpack概念webpackwebpack-概念webpack-使用准备webpack-基础使用webpack-更新打包webpack-配置修改webpack-打包流程图webpack 使用ES6模块化默认导出和导入 // 默认导出 export default {a: 10,b: 20 }// 默认导入 import Obj from js文件路径按需导出和导入 // 按需导出…

【每日一题】【LeetCode】【第三天】删除有序数组中的重复项

删除有序数组中重复项的解决之路 这个标签是简单&#xff0c;所以比较好过。 题干描述 根据题目描述&#xff0c;重点在于原地删除&#xff0c;也就是空间复杂度为O(1)。 测试案例&#xff08;部分&#xff09; 第一次 根据题目描述&#xff0c;重点在于原地删除。 class…

解决Linux【-bash: fork: retry: 没有子进程】

解决Linux【-bash: fork: retry: 没有子进程】问题发现问题解决设置Linux最大用户线程数设置单个用户可用最大进程数问题发现 日常工作中&#xff0c;服务器连不上&#xff0c;好在昨天登陆的服务器用户没有下线&#xff0c;然后执行任何命令时返回- bash: fork: retry: 没有子…

React(coderwhy)- 03(高阶组件+动画)

1.React性能优化SCU React更新机制 React的更新流程 ◼ React在props或state发生改变时&#xff0c;会调用React的render方法&#xff0c;会创建一颗不同的树。 ◼ React需要基于这两颗不同的树之间的差别来判断如何有效的更新UI&#xff1a;  如果一棵树参考另外一棵树进行完…

可观测产品的最佳实践,涵盖端到端的可观测解决方案丨阿里云用户组深圳站

2022 年 9 月 28 日&#xff0c;阿里云在深圳举办了第 11 场阿里云用户组&#xff08;AUG&#xff09;活动&#xff0c;活动主题“可观测性实践”吸引了众多技术从业者及企业管理者来到现场。通过本次活动&#xff0c;参会企业了解到三块内容&#xff1a;1. Java 应用最佳实验&…

小蓝本 第一本 《因式分解技巧》 第八章 多项式的一次因式 笔记 (第八天)

小蓝本 第一本 《因式分解技巧》 第八章 多项式的一次因式 笔记 &#xff08;第八天&#xff09;前言余数定理有理根求法第一步第二步(可能有理根多的情况下&#xff0c;可以用)第三步快速识别特殊有理根情况1情况2求解注意习题8题目题解改错前言 坚持的第8天&#xff0c;因为…

北大陈斌Python算法笔记(一)

前言 &#x1f340;作者简介&#xff1a;被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 &#x1f341;个人主页&#xff1a;红中 &#x1f342;不就是蓝桥杯嘛&#xff0c;干他&#xff01;&#xff01;我堂堂 线性结构 线性结构是一种有序数…

优先级反转问题及解决办法

优先级反转问题及解决办法什么是优先级反转解决方法1&#xff1a;优先级继承解决方法2&#xff1a;优先级天花板总结什么是优先级反转 优先级反转&#xff0c;是指在多线程的环境下&#xff0c;并且使用了信号量时&#xff0c;可能会出现的这样一种不合理的现象&#xff0c;即…

@PostConstruct 和 @PreDestroy 使用

目录1.简介2.使用3.注意事项4.执行顺序5.测试6.测试结果1.简介 PostConstruct&#xff1a; Java 自带的注解&#xff0c;在方法上使用该注解&#xff0c;会在项目启动的时候执行被修饰的方法。 PreDestroy&#xff1a; Java 自带的注解&#xff0c;在方法上使用该注解&#xff…

element 日期选择器数据更改,第一次进入页面,页面上没有回显(数据格式问题导致)

需求 页面列表数据&#xff0c;默认是展示一个月的数据 遇到的问题 一进来页面&#xff0c;日期选择器上是空的&#xff0c;但绑定的值是有数据的&#xff0c;页面上并没正确回显&#xff0c;但是去手动选择日期&#xff0c;也是可以正常回显的 思考 其实&#xff0c;选择…

【MySQL进阶教程】 索引详细介绍

前言 本文为 【MySQL进阶教程】 索引 相关知识介绍&#xff0c;下边具体将对索引概述&#xff0c;索引结构&#xff08;包括&#xff1a;索引结构概述&#xff0c;二叉树&#xff0c;B-Tree&#xff0c;BTree&#xff0c;Hash&#xff09;&#xff0c;索引分类&#xff0c;索引…

leetcode练习之商品折扣后的最终价格(单调栈算法)

题目描述 给你一个数组 prices &#xff0c;其中 prices[i] 是商店里第 i 件商品的价格。 商店里正在进行促销活动&#xff0c;如果你要买第 i 件商品&#xff0c;那么你可以得到与 prices[j] 相等的折扣&#xff0c;其中 j 是满足 j > i 且 prices[j] < prices[i] 的 最…

JdbcUtils工具类的优化升级——通过配置文件连接mysql8.0,并对mysql8.0中的表进行[简单查询]操作

目录 一、在DogDao中新增查询的功能 二、在DogDaoImpl类中继承基类&#xff0c;并实现接口的功能 三、创建工具接口RowMapper 四、重新定义一个基类BaseDao2 五、新建一个DogDaoImpl2实现类&#xff0c;继承基类BaseDao2&#xff0c;实现DogDao接口的两个查询功能 六、在…

【Kotlin】函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回值类型 )

文章目录一、函数引用作为函数参数二、函数类型作为函数返回值一、函数引用作为函数参数 函数 作为参数 , 有两种方式 : 传递 Lambda 表达式 , 也就是 匿名函数 作为参数值 ;传递 函数引用 作为参数值 ; 函数引用 可以将 具名函数 转为 函数的参数值 , 只要可以使用 Lambda 表…