这个判断身份证号是否正确的公式什么意思?
发布网友
发布时间:2022-04-24 00:14
我来回答
共1个回答
热心网友
时间:2023-05-26 22:49
给你拆解这个公式
这个公式分为三个部分:if(判断条件,满足返回的值,不满足返回的值)
判断条件:AND(LEN(F8)=18,CHOOSE(MOD(SUMPRODUCT(MID(F8,ROW($1:$17),1)*2^(18-ROW($1:$17))),11)+1,1,0,"X",9,8,7,6,5,4,3,2)&""=RIGHT(F8))
满足返回的值:"正确"
不满足返回的值:"错误"
可以看出这个公式的精髓在判断条件上,这里用到的公式作用为:
AND: 并判断,两个条件都满足则为满足,否则不满足
LEN:返回文本长度,用于判断身份证是否18位
CHOOSE:选择函数,通过序号选择对应的值,这里的作用是通过前17位求出的身份证校验码是否跟18位相同
ROW:返回行号,这里选择范围的作用是构造出{1,2,3,...17}的序列,序列的作用是拆分身份证的前17位
MID:拆分,有了上一步的序列就可以把身份证的每一位拆出来放在{}中
SUMPRODUCT:数组乘积求和函数,刚刚用mid拆出来的身份证的每一位乘以对应位数,最后相加
MOD:求余函数,将身份证通过数组乘积求和得出的结果除以11,得出余数
最后choose就是通过求到的余数作为序号跟{1,0,"X",9,8,7,6,5,4,3,2}比对,看是否一致,如果一致,那么and的另一个条件也为真,则返回正确,否则返回错误