星级打分
平均分:0 参与人数:0 我的评分:未评
身份证号码之所以会显示为X,是与校验码的生成规则有关, 跟大家简单的介绍下,身份证号码第18位,也就是校验码的编写规则吧!看完你就懂为什么会显示为X了
P, E, e# B" X+ D+ a) i- N, C
; |( B5 C$ v# f7 Z: o& o. I
一、身份证号码的构成
4 W* y9 n x, v
% n" j+ O" z* N4 n7 y
现在的身份证大多都是18位的,15位的基本已经见不到了,我们就以18位的身份证号码为例,来简单的回顾下身份证号码的编写规则
) ]9 m! k" T7 N! m9 o; S2 t) x
9 e: L2 D! K y# S8 z地址代码(1-6位)
! G2 Q- s6 J3 o7 r1 o$ X7 A0 ]3 e' I0 Q% c
1-2位是省份代码,3-4位是城市代码,5-6位是区间代码,网上很多地址对照表的,感兴趣的可以搜下
+ n+ E1 V" P! c9 h6 o: I
* V j- H6 `# P生日代码(7-14位)
1 ]0 T3 s( K( W% q* P' ?" Y
6 L% q- B: C' _* `% ], k
7-10位是年份,11-12位是月份,13-14位是天数,这个相信很多人都知道,之前是讲过的
( a4 e* X$ l7 |, @8 x9 l1 {2 p$ N( Y, x0 z: B! Q$ G
顺序码(15-17位)
, J$ z! f& C9 ?# r+ H( Q6 e& t
% l# `# D+ |3 b3 O& H/ M6 m15-16位,当地派出所给的主要是为了避免同年同月出生重复的情况,其中第17位是性别代码,奇数会分给男性,偶数会分给女性
. T2 m+ I H# K# D6 k: J! x& @: ?% n: K ~$ x, j# I* ^
校验码(18位)
9 s: y+ f" J* v
- ]) K( s8 U4 ]5 Q9 Y
顾名思义他的作用就是用来检验身份证号码是否正确的,是根据前面十七位数字码,按照特定的计算得出。下面跟大家简单地说下计算的规则,感兴趣的可以具体搜下
/ x; |, D/ I" s! g( M4 S5 R% u2 |+ E2 u1 e" s( P% |
二、计算规则
! {) h7 h. C$ a3 U
/ |% o# A) y. j2 Q1.计算余数
3 h) m8 U/ ]1 Z% G8 r0 N0 O& ^# v7 H
身份证号码的第1到17位几乎可以说是固定的,而根据规则,1到17位,还分别对应不同的系数,1到17位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2
: z. @9 R; W" v+ N* W
# S$ z" s4 k g$ p9 J
首先需要将每个位数的数字与对应的系数相称得到一个乘积,然后再将乘积求和,这个我们可以使用函数SUMPRODUCT,公式如下,结果为323。
' g% ^, ]$ m' X U- |# k
4 Y. a/ u& {7 T5 y- o/ j
=SUMPRODUCT(B2:B18,C2:C18)
& d9 K) |) B. B# J
6 W/ E- @( ]% [随后需要将323除以11来得到一个余数,这个余数我们可以使用MOD函数,它的作用就是求余数,结果为4
3 f8 o2 y; G4 {1 m5 S: [
' O; ?! n. e A' v- l" w4 H" a- W2 f公式=MOD(D19,11)
8 M+ w1 K1 {6 ?/ V, F! b4 h
# A$ @* T2 T$ I9 [- \
2.计算校验码
( q$ b9 b6 c; [6 | {
3 H9 {' B1 |( U' q: M3 D
求出余数后,还有一个余数校验码的对照表,我放在下面了,刚才求得余数为4,根据对照表可知身份证最后一位是8,如果最后一位不是8,那么它就是错误的号码
7 v& l1 I( z4 r' o: C" d4 |
% e: ~; z5 g; z& [0 C6 N7 c4 u& Y因为除以11,所以说是有10个余数的,10个余数就会对应10个校验码,如果校验码写10,那么身份证的长度就会超过18位。所以为了保证身份证号码长度的统一,就使用X来代替数字10,X其实是罗马数字10的意思。
; M. T R/ u, @/ M) T% t
1 \6 @8 ~. p) j! r+ s9 Y3 }
三、禁止录入错误的号码
4 _: p3 Z+ b% \/ z5 } \3 B+ H3 u2 B. T3 E! B) u+ P
利用校验码,我们可以在Excel中设置禁止录入错误的身份证号码
* H& |8 g& z: [! o2 C+ \5 E, C2 Y
) ^; B6 A$ T6 O9 T0 |/ O# L( s
首先在旁边粘贴公式,会显示一列错误值,不用担心,随后选择数据区域,为数据区域添加【数据验证】,将【允许】设置为自定义,直接输入=B2,就是第一个公式,确定即可
+ i- f. x* n; e( a( {' ~ i9 K
* v" U- j9 z5 }) D! x6 L* m& T% z公式:=IF(RIGHT(A2,1)="X","X",--RIGHT(A2,1))=VLOOKUP(MOD(SUMPRODUCT(--MID(A2,{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;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)
8 l! s1 L7 q5 ?$ Y5 L- \ H: K" T' A0 ]" e/ `% o+ Y
以上就是今天的全部内容啦,身份证号码结尾位X其实并没有什么特殊的,但是在Excel中,我特别喜欢身份证号码结尾是X的人,有人知道为什么吗?
) F4 V: M }9 b2 x9 h" X
/ g( h' R! `" O) Y$ }, j k