Excel中判斷身份證號是否有效,可能是最優解決方案!

昨天的文章跟大家分享了excel中幾種處理身份證號的方法,有小夥伴評論留言問“怎麼計算身份證號是否有效”,小編研究了一下,發現這道題很深,值得深究!

公式:

=IF(TEXT(IF(MOD(12-(MID(B2,1,1)*7+MID(B2,2,1)*9+MID(B2,3,1)*10+MID(B2,4,1)*5+MID(B2,5,1)*8+MID(B2,6,1)*4+MID(B2,7,1)*2+MID(B2,8,1)*1+MID(B2,9,1)*6+MID(B2,10,1)*3+MID(B2,11,1)*7+MID(B2,12,1)*9+MID(B2,13,1)*10+MID(B2,14,1)*5+MID(B2,15,1)*8+MID(B2,16,1)*4+MID(B2,17,1)*2),11)=10,"X",MOD(12-(MID(B2,1,1)*7+MID(B2,2,1)*9+MID(B2,3,1)*10+MID(B2,4,1)*5+MID(B2,5,1)*8+MID(B2,6,1)*4+MID(B2,7,1)*2+MID(B2,8,1)*1+MID(B2,9,1)*6+MID(B2,10,1)*3+MID(B2,11,1)*7+MID(B2,12,1)*9+MID(B2,13,1)*10+MID(B2,14,1)*5+MID(B2,15,1)*8+MID(B2,16,1)*4+MID(B2,17,1)*2),11)),0)=MID(B2,18,1),"對","錯")

Excel中判斷身份證號是否有效,可能是最優解決方案!

小編研究了一下,這個判斷方法不錯,缺點是公式太長,而且小編髮現這個公式存在侷限性。如上圖,姓名E的身份證號寫成了19位(中間多出一個數),這個公式會判定它是錯的,而當姓名F的身份證號寫成了19位(最後多出了一個數),這個公式卻依舊判定它是對的;並且當身份證號為空或者位數不對時,這個公式也只是顯示計算錯誤“#VALUE!”,而無法得知錯在哪兒。

所以小編深入研究了一下,得出另一個公式。

公式:

=IF(LEN(B2)=0,"空",IF(LEN(B2)=15,"老號",IF(LEN(B2)<>18,"位數不對",IF(CHOOSE(MOD(SUM(MID(B2,1,1)*7+MID(B2,2,1)*9+MID(B2,3,1)*10+MID(B2,4,1)*5+MID(B2,5,1)*8+MID(B2,6,1)*4+MID(B2,7,1)*2+MID(B2,8,1)*1+MID(B2,9,1)*6+MID(B2,10,1)*3+MID(B2,11,1)*7+MID(B2,12,1)*9+MID(B2,13,1)*10+MID(B2,14,1)*5+MID(B2,15,1)*8+MID(B2,16,1)*4+MID(B2,17,1)*2),11)+1,1,0,"X",9,8,7,6,5,4,3,2)=IF(ISNUMBER(RIGHT(B2,1)*1),RIGHT(B2,1)*1,"X"),"正確","錯誤"))))

Excel中判斷身份證號是否有效,可能是最優解決方案!

如上圖,此公式可以清楚地告訴我們它是老號、空還是位數不對。

這個公式雖然依舊有點長,但有一定的改善,小夥伴們如果有更好的判斷方法,歡迎一同來探討哦!


分享到:


相關文章: