乐于分享
好东西不私藏

wps表格身份证号码校验

wps表格身份证号码校验
在信息统计过程中,经常遇到搜集身份证的情形,由于种种原因,我们无法保证得到的身份证号码是正确的,为此,我们可以利用身份证号码的第18位的校验原理,编写一个身份证号码校验函数。
=LAMBDA(id_num, LET(id_num,TRIM(SUBSTITUTE(id_num,CHAR(160),"")),
IF(LEN(id_num)<>18,"身份证号码长度有误!",
LET(id_num_char,MID(id_num,SEQUENCE(,17),1),
weights,MOD(2^(SEQUENCE(,17,17,-1)),11),
sum_weights,MOD(SUM(id_num_char*weights),11),
check_lst,HSTACK({"1","0","X"},TEXT(SEQUENCE(,8,9,-1),"@")),
check_code,INDEX(check_lst,sum_weights+1),
IF(check_code<>RIGHT(id_num,1),"身份证号码有误!","校验通过")))))
然后在wps表格的公式-名称管理器中新建名称
给这个自定义函数起名,如IDCHECK,然后把引用位置后面的文本替换为上面的函数定义即可。
这样,我们下次需要对身份证校验时,直接把信息复制到这个工作簿,直接用这个函数就可以了,和wps表格自带的函数一样用法。
说明:
  1. wps表格引入了let函数,对于有编程基础的很安利,这里变量命名即赋值,类似python。
  2. Wps表格的字符串不会自动作为数组处理,我们需要结合mid函数才可遍历其各个字符。
  3. 第18位校验码的生成原理在我的公式中已体现,如果大家不愿意自行计算,也可以到网上搜索现成的。
  4. 编码对照序列,大家可以理解为一个从X到0的逆序队列向下推两位而成,方便大家记忆。