EXCEL身份證號碼校驗以及提取基本資訊

2021-09-25 22:04:41 字數 1560 閱讀 6544

性別提取

籍貫提取

出生年月提取

我們的居民身份證作為我們國家每個人唯一的身份標識,其設計十分巧妙,18位的身份證號包含了許多資訊,並且為了防止身份證錄入錯誤,還提供了一種可靠的校驗方式。

順帶介紹一下我們身份證的構成。

我們以500225199203026858為例

號碼含義

500225

行政區域**

19920302

出生年月

685同一地區同一天出生的順序碼(奇數男;偶數女)

8校驗碼

身份證號碼位數 w

iw_i

wi​123

4567

891011

1213

1415

1617

18係數 a

ia_i

ai​7910

5842

1637

91058

42校驗碼計算公式:餘數=

∑117(

wi∗a

i)%11

餘數=\sum_^(w_i*a_i)\%11

餘數=∑11

7​(w

i​∗a

i​)%

11根據餘數區查詢對應得校驗碼表餘數0

1234

5678

910校驗碼10x

9876

5432

以上就是身份證的校驗。

我們需要在excel中實現這個校驗,在輸入身份證號後能夠去校驗並且能夠進行提示

如圖所示:

在身份證驗證結果中輸入公式:

=if(mid("10x98765432",(mod(sumproduct(mid(a14,row(indirect("1:17")),1)*

),11)+1),1)=right(a14),true,false)

首先解釋一下幾個關鍵的函式:

indirect(引用區域,引用格式):

mid(text, start_num, num_chars):

row(refrence):

sumproduct(array1, [array2], [array3], …):

mod(a,b)

-a/b求餘

if函式之流不必解釋了,進行一頓操作之後,將計算出來的校驗碼與身份證號中的最後一位right(身份證號)進行相等判斷,即可得出身份證是否爭取輸入身份證號。

身份號中的性別是順序碼的奇偶性進行判斷的,奇數分配給男性,偶數分配給女性,於是,只需要提取第17位號碼,進行2的求餘,若為1,則為男性,反之,則為女性。

上**:

=if(mod(mid(a10,17,1),2),"男","女")
=vlookup(mid(a14,1,6),行政區域表!a:b,2,true)
出生年月提取就很好理解了,直接利用date函式,分別提取年/月/日進行提取。

身份證號碼校驗

中國居民身份證號碼編碼規則 中國居民身份證校驗碼演算法 都包含 author liuwei date 2020 11 19 身份證校驗工具 public class idnumutil 定義判別使用者身份證號的正規表示式 15位或者18位,最後一位可以為字母 string regularexpres...

Oracle 身份證號碼校驗

今天來了身份證校驗的需求,想在oracle中校驗後將錯誤資料查詢出來。於是我在網上查到了身份證校驗的oracle函式。但是發現一些正確的身份證號也未校驗通過!後來經過千辛萬苦的努力終於發現了,網上給的函式中判斷是否是閏年的 substrb 函式應該從第7為開始擷取,而不是第6位!還有要注意最後一位校...

JS校驗身份證號碼

function isidcardno num d 0 9 x test num 驗證前2位,城市符合 var acity if acity parseint num.substr 0,2 null alert 城市 acity parseint num.substr 0,2 下面分別分析出生日期和...