文章目录

  • 前言
  • 身份证号校验
    • 校验规则
    • EXCEL实现
  • 性别提取
  • 籍贯提取
  • 出生年月提取

前言

我们的居民身份证作为我们国家每个人唯一的身份标识,其设计十分巧妙,18位的身份证号包含了许多信息,并且为了防止身份证录入错误,还提供了一种可靠的校验方式。
顺带介绍一下我们身份证的构成。
我们以500225199203026858为例

号码 含义
500225 行政区域代码
19920302 出生年月
685 同一地区同一天出生的顺序码(奇数男;偶数女)
8 校验码

身份证号校验

校验规则

身份证号码位数 wiw_iwi​ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
系数 AiA_iAi​ 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 校验码

计算公式:余数=∑117(wi∗Ai)%11余数=\sum_{1}^{17}(w_i*A_i)\%11余数=∑117​(wi​∗Ai​)%11

根据余数区查询对应得校验码表

余数 0 1 2 3 4 5 6 7 8 9 10
校验码 1 0 X 9 8 7 6 5 4 3 2

以上就是身份证的校验。

EXCEL实现

我们需要在EXCEL中实现这个校验,在输入身份证号后能够去校验并且能够进行提示
如图所示:

在身份证验证结果中输入公式:

=IF(MID("10X98765432",(MOD(SUMPRODUCT(MID(A14,ROW(INDIRECT("1:17")),1)*
{7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2}),11)+1),1)=RIGHT(A14),TRUE,FALSE)

首先解释一下几个关键的函数:
INDIRECT(引用区域,引用格式):

  • 解释: 用于引用,一般分为两种情况,引用文本或者引用内容,第二个参数缺省值为True。
  • 例如 对于B2 (此单元格的内容为A1),如果在某个单元格输入=INDIRECT(B2 ),则得到A1的实际值;如果输入=INDIRECT(“B2” ),则得到B2这个文本值
  • 这里主要是用于以文本格式

MID(text, start_num, num_chars):

  • 从一个字符串中截取出指定数量的字符

ROW(refrence):

  • 获取引用的单元格的行号
  • 这里的用法相当巧妙,ROW(INDIRECT(“1:17”)生成了1…17的行号,生成一个数组{1;2;…17}

SUMPRODUCT(array1, [array2], [array3], …):

  • 数组对应相乘再求和。

MOD(a,b)
-a/b求余

IF函数之流不必解释了,进行一顿操作之后,将计算出来的校验码与身份证号中的最后一位RIGHT(身份证号)进行相等判断,即可得出身份证是否争取输入身份证号。

性别提取

身份号中的性别是顺序码的奇偶性进行判断的,奇数分配给男性,偶数分配给女性,于是,只需要提取第17位号码,进行2的求余,若为1,则为男性,反之,则为女性。
上代码:

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

籍贯提取

身份证号的前5位为行政区域代码,直接查表即可。但是存在一个不好的地方就是,此代码随着行政区域的变动而变动,例如在,1997年前,重庆未直辖,大足的代码就是510230,后来直辖,变成了500225,再到前几年合并双桥区升为大足区,改为500111。所以如果登记不同年龄阶段的人,那么我们就不能用同一张代码表。
我介绍一下怎么提取。
首先下载一张比较完全的行政区域代码表链接: 示例文档 提取码: tpgu ,此文档中的存在一张17年的表,可直接使用。
利用vlookup函数进行查询填充。
具体代码:

=VLOOKUP(MID(A14,1,6),行政区域表!A:B,2,TRUE)

出生年月提取

出生年月提取就很好理解了,直接利用DATE函数,分别提取年/月/日进行提取。

EXCEL身份证号码校验以及提取基本信息相关推荐

  1. 基于可视化结构的身份证号码校验系统-树莓派实现

    基于可视化结构的身份证号码校验系统 摘要: 本作品是一个通用的身份证号码校验系统,目前已经尝试在Linux和Windows系统下运行,结果均可达到理想效果.系统通过运用基础GUI库tkinter创建系 ...

  2. JS身份证号码校验大全史上最全号称公安局安全监测

    身份证号码校验 function testid(id) {// 1 "验证通过!", 0 //校验不通过 // id为身份证号码var format = /^(([1][1-5]) ...

  3. 【转载】 身份证号码校验(15位和18位都可以)

    转载自: 开源中国社区    面向对象的15位.18位中国大陆身份证号码解析.验证工具 import java.text.ParseException; import java.text.Simple ...

  4. 输入一个18位的身份证号码,从中提取出生日期

    输入一个18位的身份证号码,从中提取出生日期,并以"出生日期是年月*日".样的格式输出 a=input("请输入18位身份证号码") n=a[6:10] m=a ...

  5. JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别

    目录 1.JS身份证号码校验 2.JS根据身份证号码获取出生年月日 3.JS根据出生年月日获取年龄 4.JS根据身份证号码获取性别 1.JS身份证号码校验 /*** 身份证校验** @export* ...

  6. validate格式校验之身份证号码校验

    //校验身份证号码 function isIdCardNo(num) {     var factorArr = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5 ...

  7. vue身份证号码校验

    一.vue身份证号码校验? let checkRegNo = (rule,value,callback) => {     setTimeout(() => {         const ...

  8. 身份证号码校验(JavaScript)

    /*** 身份证号码校验* 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X*/ function checkIdCard(idCard){v ...

  9. 中国公民身份证号码校验

    中国公民身份证号码校验 上图可看出18位位身份证每一部分表示的意义. 图为随机生成身份号码,四川省 乐山市 井研县 1981年12月28日生 这里主要讲解最后一位校验码的验证 校验码主要是由前面17位 ...

  10. 使用Java编写Hive的UDF实现身份证号码校验及15位升级18位

    使用Java编写Hive的UDF实现身份证号码校验及15位升级18位 背景 在数仓项目中,有时候会根据身份证信息做一些取数filter或者条件判断的相关运算进而获取到所需的信息.古人是用Oracle做 ...

最新文章

  1. 【JQUBAR1.1】jQuery 插件发布
  2. 使用组策略实现文件复制
  3. vim 初学简单设置
  4. ASM3.0学习(二)
  5. 【spring boot】使用RestTemplate调用百度坐标转换服务
  6. Flink-keySet方法
  7. iphone NSString 字符串处理:截取字符串、匹配字符串、分隔字符串
  8. 好用的代码加密软件,编程,编译数据安全
  9. CT图像重建中的伪影
  10. python语言开发什么_python语言是什么语言开发的_Python语言的由来,编程语言简史...
  11. 统计学之三大相关性系数简介(pearson、spearman、kendall)
  12. 深度学习推荐系统_深度推荐系统
  13. 多项式嵌套乘法及matlab实现
  14. 一个简单的ADFR的re-docking教程
  15. windows 2003 下SERVU:无法开始服务器.服务器执行缺少
  16. java-php-python-ssm计算机网络精品课程网站计算机毕业设计
  17. Cris 的 Docker 学习笔记
  18. 活着就是为了改变世界
  19. 第7课Altium Designer20(AD20)+VESC6.4实战教程:绘制原理图4(北冥有鱼)
  20. 详尽!统计学知识大梳理

热门文章

  1. 用python绘制万花筒_Python实现PS滤镜的万花筒效果示例
  2. VueDemo-12.加入购物车
  3. Unity3D | 经典小游戏Pacman
  4. App如何生成下载二维码?扫码即可下载App
  5. end 键功能的定义
  6. 马云的“虚拟信用卡”动了谁的奶酪?
  7. [玩转UE4/UE5动画系统>技能系统(GAS)篇] 二 技能 Gameplay Ability(GA)
  8. 子域名劫持漏洞详解、挖掘和防护
  9. 最新计算机台式机小机箱,几款热门台式机主机机箱的参数配置【图文】
  10. cdrom是多媒体微型计算机,2011年计算机一级考试理论试题:多媒体