作业帮 > 综合 > 作业

EXCEL函数高手,能否帮忙编个函数,可以识别输入身份证号输入的正确性?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/18 07:01:53
EXCEL函数高手,能否帮忙编个函数,可以识别输入身份证号输入的正确性?
并不是识别身份证号码的真实性,而是避免一些常识性错误,比如出生年月日应该是正常的年月日.
日常需要在表格中大量输入身份证号,挨个检查的话太累眼了
能否有个函数可以截取身份证号的七到十五位,也就是出生年月日,然后再一个函数判断这个出生年月日是否在合理范围内?
EXCEL函数高手,能否帮忙编个函数,可以识别输入身份证号输入的正确性?
设A2是身份证号
=IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2),LEN(A2)=15)
结果为TRUE,正确的身份证号,FALSE为错误的身份号.你可以将公式输入到B2,或者在数据有效性中设置.
实际上,18位身份证的最后一位就是检验码,它是根据身份证前17位数字计算出来的,一般情况只要有一位数字输入错误,计算就会与第18位数不符.当然有可能多位数字均输入错误,计算后恰好与之相符,但这种情况可能性很低.
判断15位身份证的中间日期是否是有效日期用公式 =ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00")).
15位身份证号现已不多,上面的公式没有进一步判断,如果确实还要判断,就将公式改变为
=IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2),IF(LEN(A2)=15,ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00"))))
不是15位和18位的身份证号均判断为错误.
公式不错,希望能多给点分.