星级打分
平均分:0 参与人数:0 我的评分:未评
身份证号码之所以会显示为X,是与校验码的生成规则有关, 跟大家简单的介绍下,身份证号码第18位,也就是校验码的编写规则吧!看完你就懂为什么会显示为X了
X- P# w, S! ?! N2 t P/ Z
8 H+ \- [) A* J5 G. a
一、身份证号码的构成
7 g6 d- Y& r* ~+ Z, p; |- V, {& S
现在的身份证大多都是18位的,15位的基本已经见不到了,我们就以18位的身份证号码为例,来简单的回顾下身份证号码的编写规则
( [3 i0 x4 e. h. V0 A1 `
% p$ @& D0 V W( G2 S5 x3 b地址代码(1-6位)
/ K8 q2 |; {0 d$ D0 u* [- G s
( [6 C1 k" z1 G0 ]1-2位是省份代码,3-4位是城市代码,5-6位是区间代码,网上很多地址对照表的,感兴趣的可以搜下
# V& j9 V$ c! T" _4 S' h. E
- e0 Q4 V/ E$ q9 C1 B6 q5 C( K生日代码(7-14位)
: Z8 y4 f' u M2 D. H' I H1 @2 R9 y4 b) @' _7 T
7-10位是年份,11-12位是月份,13-14位是天数,这个相信很多人都知道,之前是讲过的
$ J- ]# z _: m. t' f
m3 y( i: W; }6 X$ ?" Q顺序码(15-17位)
. {3 y1 {$ v' z& f
1 n) j& a* [4 \3 s* z6 [15-16位,当地派出所给的主要是为了避免同年同月出生重复的情况,其中第17位是性别代码,奇数会分给男性,偶数会分给女性
- h) o$ z' |2 `
, q* ]! o8 ^7 e) i/ ]& x0 i0 p3 K
校验码(18位)
+ y/ o; N" r$ E8 Y2 y |$ l- E
9 f; d5 T, q8 _; I% S顾名思义他的作用就是用来检验身份证号码是否正确的,是根据前面十七位数字码,按照特定的计算得出。下面跟大家简单地说下计算的规则,感兴趣的可以具体搜下
; {4 @3 n( U. J, u! E5 b
4 J; x6 b; [% W
二、计算规则
W/ c0 N# o* g
9 E( k9 X! `6 H. \: {: i1.计算余数
4 D- m; b: `5 Q, z5 [
$ r# E1 s$ u; ?1 A$ w身份证号码的第1到17位几乎可以说是固定的,而根据规则,1到17位,还分别对应不同的系数,1到17位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2
5 A" k. m2 }9 M- @# H8 H4 W
1 m5 c% d9 @9 g2 ]首先需要将每个位数的数字与对应的系数相称得到一个乘积,然后再将乘积求和,这个我们可以使用函数SUMPRODUCT,公式如下,结果为323。
9 Y8 L$ S3 N# X' J) `
% ~. F' t# V4 K1 K8 _1 R
=SUMPRODUCT(B2:B18,C2:C18)
6 p- `# M" e8 N, q" n5 q* _
0 j8 C* [9 V2 z/ [" x0 t
随后需要将323除以11来得到一个余数,这个余数我们可以使用MOD函数,它的作用就是求余数,结果为4
. y! d. l) U% E( p' l
5 J) o) g% H( i$ `( D; j* d! j( `公式=MOD(D19,11)
2 N4 s& E) ^9 n5 p
* R) x$ R/ B+ s6 q( y2.计算校验码
+ U, i2 c f+ Y, c! a: N
* b0 I/ [) C4 s1 ^求出余数后,还有一个余数校验码的对照表,我放在下面了,刚才求得余数为4,根据对照表可知身份证最后一位是8,如果最后一位不是8,那么它就是错误的号码
7 c: h; Z/ b9 Y& A/ Z* Z
7 K l% [3 _6 }$ l& U因为除以11,所以说是有10个余数的,10个余数就会对应10个校验码,如果校验码写10,那么身份证的长度就会超过18位。所以为了保证身份证号码长度的统一,就使用X来代替数字10,X其实是罗马数字10的意思。
1 u' ^& t# e s
. V* `: g, r# n$ G2 c0 K+ m三、禁止录入错误的号码
& g1 A G' K1 D( A1 [% j2 d/ I
! Q, o P: A6 C0 ]6 B+ V% \利用校验码,我们可以在Excel中设置禁止录入错误的身份证号码
/ `# g) s' h3 {) x# Q
$ A3 l# X; T8 e2 a! A
首先在旁边粘贴公式,会显示一列错误值,不用担心,随后选择数据区域,为数据区域添加【数据验证】,将【允许】设置为自定义,直接输入=B2,就是第一个公式,确定即可
( H B$ w$ ^. S7 ~+ }& m7 _
6 o5 P- W y9 _0 k6 q公式:=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)
2 j+ S* L( {. Y7 w
* R7 o) T5 M' q/ l' {/ F以上就是今天的全部内容啦,身份证号码结尾位X其实并没有什么特殊的,但是在Excel中,我特别喜欢身份证号码结尾是X的人,有人知道为什么吗?
) O( ]& P9 [! Y& u6 I( t0 H1 K
* o% O6 u6 W% i4 {9 M0 G+ X