?
今天在EXCELHOME論壇上看到一個帖子,要求提取身份證號碼之類的信息。
我就想,身份證號碼的編碼有什么規則呢?不是完全了解,于是就打開騰訊元寶,把模型切換成DeepSeek,問了一下,這會搞清楚了,記下來:
中國居民身份證號碼遵循國家標準GB 11643-1999,采用18位編碼結構,包含以下四個部分:
1. 地址碼(前6位)
結構:省(2位) + 市(2位) + 區/縣(2位)
規則:前兩位代表省級行政區(如11=北京,44=廣東),中間兩位代表市級,最后兩位代表區/縣級。
2. 出生日期碼(第7-14位)
格式:YYYYMMDD
規則:按公歷出生日期填寫,年份用4位,月、日各2位。
3. 順序碼(第15-17位)
結構:派出所代碼(前2位) + 性別碼(第17位)
規則:前兩位是戶籍所在地派出所的分配代碼,按當天該派出所所轄地出生兒順序分配。
第17位表示性別:奇數(1,3,5,7,9)為男性,偶數(0,2,4,6,8)為女性。
4. 校驗碼(第18位)
作用:通過算法驗證前17位的正確性,防止輸入錯誤或偽造號碼。
規則:前17位分別乘以權重系數:[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]。
將乘積之和除以11,得到余數。
余數對應校驗碼:0→1, 1→0, 2→X, 3→9, 4→8, 5→7, 6→6, 7→5, 8→4, 9→3, 10→2。
完整示例
身份證號:11010519900101017X
地址碼:110105(北京市朝陽區)
出生日期:19900101(1990年1月1日)
順序碼:017(男性)
校驗碼:X
我們可以用這些規則來檢查身份證號碼的有效性,可以考慮寫一個VBA函數來實現這個功能(當然,用手工計算檢查也可以,就是太麻煩。)
閱讀原文:原文鏈接
該文章在 2025/2/27 10:40:34 編輯過