銀行卡號碼相關
最近有一項任務,要輸入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 下面分別分析出生日期和...