身份证第18位验证码计算函数
程序代码:Public Function 计算身份证校验位(cs As String) As String
Const 检验码查询位 = "1 0 X 9 8 7 6 5 4 3 2"
Const 每位权数 = "7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1"
Dim fj() As String '用来分解上面二个常量的
Dim Q(16) As Long '每位权数的数组
Dim W(16) As Long '身份证17位
Dim i As Long '循环变量
Dim M As Long '和
Dim j As Long '除11 后的余
If Len(cs) <> 17 Then '判断长度,不等于17,则退出,无返回值
Exit Function
End If
fj = Split(每位权数, " ") '分解权数
M = 0
For i = 1 To 17 '循环
W(i - 1) = Val(Mid(cs, i, 1)) '取身份证每位值
Q(i - 1) = Val(fj(i - 1)) '取权数
M = M + W(i - 1) * Q(i - 1) '积累加
Next i
j = M Mod 11 '取余
fj = Split(检验码查询位, " ") '分解验证码表
计算身份证校验位 = fj(j) '查表,返回结果
End Function
身份证第18位验证码计算函数
今天需要,临时写的.
算法原理,不提供了,网上大把的有.







