中国居民身份证由18位组成,其中前6位是所在县的行政区划代码,中间8位是出生年月日,其中月日不足10以左侧0填充,最后位中前两位是序号,从00-99一共1000个,最后一位是校验码,是前17位根据国家标准计算出来的,即GB 11643-1999,用于检验身份证号码输入是否正确。

校验码的计算规则是:

由左至右的17位数字,每一位的系数分别是:7,9,10,5,8,4,2,1,6,3,7,9,10, 5,8, 4, 2,每一位与系数分别相乘,它们的积的和除以11,得到从0-10的余数,每一个余数对应一个校验码,分别的对应关系是,0-1,1-0,2-X,3-9,4-8,5-7,6-6,7-5,8-4,9-3,10-2。完成计算对照后就形成了校验码。

可以使用excel来计算身份证校验码,有多种方式,下面是一部分计算方法,下列公式的身份证号码都存储在单元格a1中,

公式1:

IF(RIGHT(A1,1)=LET(id,MOD(SUMPRODUCT(VALUE(MID(A1,SEQUENCE(1,17,1,1),1)),{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}),11),LOOKUP(id,{0,1,2,3,4,5,6,7,8,9},{"1","0","X","9","8","7","6","5","4","3"})),TRUE,FALSE)

公式2:

=MID("10X98765432",MOD(SUMPRODUCT(MID(A1,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11) 1,1)

公式2的row、indirect可以替换成sequence,形成公式的变形。