EXCEL校驗身份證號碼和銀行卡號

2021-09-21 06:22:51 字數 1575 閱讀 1050

銀行卡號碼相關

最近有一項任務,要輸入n多人員資訊,身份證號碼,性別,出生年月,銀行卡號碼等等。身份證號碼上已經包含了性別和出生年月還要輸入一遍,最讓人抓狂的就是身份證號碼和銀行卡號了,輸入完還要為了防止極低的錯誤率再核對一遍,費事費力。

既然身份證號碼中包含了性別和出生年月資訊和校驗位,銀行卡號碼也包含校驗位,為什麼不讓excel自動填充,並顯示輸入的號碼是否正確呢!

身份證號碼的構成,例如身份證號碼110101190001011236位數

數值含義

1-211

省份**

3-60101

區縣**

7-14

19000101

出生日期

15-16

12順序編號前兩位173

順序編號第三位,偶數為女,奇數為男186

校驗位

=text(mid(e4,7,8),"0-00-00")
e4為身份證號碼所在單元格;

mid(cell, n, l)的作為,從cell的第n位開始提取,共提取l位。

=if(mod(mid(e4,17,1),2)=1,"男","女")
e4為身份證號碼所在單元格;擷取e4單元格的第17位,除2取餘,如是1填充「男」,如果是0填充「女」。

=if(e4="","",(if(mid("10x98765432",mod(sumproduct(mid(e4,row(indirect("1:17")),1)*2^(18-row(indirect("1:17")))),11)+1,1)=mid(e4,18,18),"正確","錯誤")))
e4為身份證號碼所在單元格;

位數數值

權重乘積

位數數值

權重乘積11

2^17

131072101

2^8021

2^16

65536111

2^7030

2^15012

12^6644

12^14

16384131

2^5050

2^13014

12^4166

12^12

4096151

2^3871

2^11

2048161

2^2881

2^10

9216171

2^1691

2^90

將乘積列相加的228454,對11取餘的6,取10x98765432中的第6+1位,即6。如果第18位是6則正確,否則錯誤。

=if(mod(sumproduct(value(mid(text(mid(d4,row(indirect("1:"&len(d4))),1)*(mod(len(d4)-row(indirect("1:"&len(d4))),2)+1),"00"),,1))),10),"錯誤","正確")

身份證號碼校驗

中國居民身份證號碼編碼規則 中國居民身份證校驗碼演算法 都包含 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 下面分別分析出生日期和...