【UN】Excel中身份证处理场景和方法全集!

对于一些Excel的使用者来说,身份证处理是一个经常面对的问题,也经常有人问起相关的问题。以前发过一个视频,后来发现介绍的不是很全面,今天就完整的介绍一下在Excel中处理身份证的各种场景。

本文的内容包括:

  1. 输入身份证变乱码显示怎么办?

  2. 从文本文件导入身份证变乱码怎么办?

  3. 身份证判断性别

  4. 根据身份证取出生日期

  5. 根据身份证判断籍贯

  6. 判断一个身份证是否正确

  7. 如何查找重复的身份证号

01

输入身份证号码变乱码怎么办?

初学者输入身份证时会遇到这个问题:

这实际上不是乱码,是科学计数法。Excel的单元格格式缺省情况下设为常规,依据输入的内容自动判断数据类型。由于身份证号全部是数字,所以就自动按数值显示了。又由于身份证号比较长,Excel就自动按照科学计数法显示了。

很多人会修改单元格格式为数值:

但是结果已经错了:

Excel对于数值最多只保留前面15为数值,后面的都记成0。因此,这个身份证号的后面3位已经丢失了。

经常有人问起,这种情况下,能否找回原来的身份证号。答案是否定的,很残酷,但是确实没有办法。

只能在输入身份证号前先把单元格格式修改为文本:

也可以在输入时首先输入一个英文的单引号('),

相当于通知Excel,接下来这个单元格中输入的都当作文本处理。

02

从文本文件导入身份证变乱码怎么办?

如果单独输入文本文件,我们可以采用上一节的方法来解决。但是,如果文本文件中有很多身份证号,我们需要将它们导入到Excel中。

你可能会在文本文件中全选,然后Ctrl+C复制,粘贴到Excel中。结果是错误的:

也可能会在文件-打开对话框中,选择文本文件,然后选择这个保存有身份证号的文件:

毫不意外的是,这个结果也是错误的!

这种情况下,可以采用这个方法导入到Excel中。

在数据选项卡下, 点击“自文本”:

这本质是个分列操作,所以是跟分列一样的对话框:

一直点下一步,来到最后一步:

这里可以设置各列的数据类型,将身份证号设为文本,然后点击完成即可。

03

身份证号判断性别

我们知道身份证号的倒数第2位表示性别,奇数是男,偶数是女。

假设A1单元格中有身份证号:110108198810017562。可以使用下面的公式判断这个身份证号的性别:

=IF(ISODD(MID(A1,17,1)),"男","女")

其中MID函数部分从身份证号里取出倒数第2位数字,ISODD函数判断该数字是否奇数,IF函数根据判断给出结果。

04

根据身份证号取出日期

身份证号的第7位至14位是出生年月。假设A1单元格中有身份证号:110108198810017562,可以使用下面的公式取出出生年月:

=MID(A1,7,8)

这样取出的是一个文本:

19881001

如果希望显示为日期形式,可以使用下面的公式:

=TEXT(MID(A1,7,8),"0000-00-00")

这么得到的就是一个日期形式:

1988-10-01

这个结果看上去是日期,实际是文本,如果希望得到真正的日期,可以使用下面的公式:

=--TEXT(MID(A1,7,8),"0000-00-00")

然后将单元格格式设为日期即可。

05

根据身份证判断籍贯

严格的说,我们这里判断的不是籍贯,而是一个人第一次办身份证时的户口所在地。这个信息反应在身份证号的前6位当中。

假设A1单元格中有身份证号:110108198810017562,我们可以使用公式:

=LEFT(A1,6)

得到身份证号前6位。但是怎么得到具体籍贯是哪里呢?

我们需要有一个对应表,将身份证号前6位与籍贯对应起来。

你可以上网搜这个表,也可以上国家统计局网站获得这个信息。国家统计局网站地址是:

http://www.stats.gov.cn/tjsj/tjbz/

在网站上点击统计解读,统计标准:

然后点击统计用区划和城乡划分代码:

点击选择2020年(最新年份):

选择一个省份(如果想全部下载,手工操作太累,需要写爬虫程序):

下面是北京所有区的编码(只到这个级别就可以了,不需要更细的编码):

这个表格可以复制到Excel中,然后通过函数或其他方式将第一列只保留6位。

接下来就是将使用Vlookup函数,将前面的LEFT公式作为第一个参数,进行匹配查找就可以了。

06

判断一个身份证是否正确

身份证的最后一位是校验位,是根据前面的数字计算出来的一个结果。如果是随便编写的一个身份证号,这个结果就对不上。在Excel中,我们也可以判断一个身份证号是否正确。

假设A1单元格中有身份证号:110108198810017562,下面的公式可以判断这个身份证号是否正确:

在B1中输入公式:

=CHOOSE(MOD(SUM((MID(A2,1,1)+MID(A2,11,1))*7+(MID(A2,2,1)+MID(A2,12,1))*9+(MID(A2,3,1)+MID(A2,13,1))*10+(MID(A2,4,1)+MID(A2,14,1))*5+(MID(A2,5,1)+MID(A2,15,1))*8+(MID(A2,6,1)+MID(A2,16,1))*4+(MID(A2,7,1)+MID(A2,17,1))*2+MID(A2,8,1)+MID(A2,9,1)*6+MID(A2,10,1)*3),11)+1,1,0,"X",9,8,7,6,5,4,3,2)

在C1中输入公式:

=IF(LEN(A2)<18,"一代身份证无校验码",IF(RIGHT(A2,1)=TEXT(B6,"?"),"是","否"))

公式虽然很长,本身并不复杂。但是计算的原理需要较长的解释,这个工作就放到以后的文章中进行。如果大家需要这么做,直接使用这两个公式即可。

07

如何查找重复的身份证号

一般情况下通过条件格式,突出显示重复值就可以:

但是对于下面的身份证号:

110108199901015431

110108199901015321

Excel是会判定他们重复的。(因为前面15位一样)。

使用一般的COUNTIF公式来判断也会出现同样的问题。要使用下面的公式:

=COUNTIFS($A$1:$A$1000,A1 & "*")

END
(0)

相关推荐