Excelでマイナンバー(個人番号)の正誤を確認するユーザー定義関数を作りました。
二つの関数があります。
一つは「kensasuji_kojin」で個人番号12桁の左から11桁を与えると検査数字(チェックデジット)を返します。
もう一つがメインで「is_kojin_bango」で個人番号を与えると先頭11桁から求まる検査数字と末尾1桁の数字を比較し合致すればTrueを返します。12ケタのチェックもします。
例えばA1セルに個人番号を入力し、B1セルに「=is_kojin_bango(A1)」と入力します。
使用に関しては自己責任でお願いします。
Function kensasuji_kojin(base)
'個人番号12桁の左から11桁を引数とする。
'チェックデジットを返す。
s = 0
For n = 1 To 11
p = Mid(base, 11 - n + 1, 1)
If n <= 6 Then
q = n + 1
Else
q = n - 5
End If
s = s + p * q
Next n
If s Mod 11 <= 1 Then
kensasuji_kojin = 0
Else
kensasuji_kojin = 11 - s Mod 11
End If
End Function
Function is_kojin_bango(kojin_bango)
'個人番号12桁を引数とする。
'桁数とチェックデジットが合致すればTrueを返す。
If Len(kojin_bango) <> 12 Then
is_kojin_bango = False
Else
base = Left(kojin_bango, 11)
cd = kensasuji_kojin(base)
If cd - Right(kojin_bango, 1) = 0 Then
is_kojin_bango = True
Else
is_kojin_bango = False
End If
End If
End Function
'個人番号12桁の左から11桁を引数とする。
'チェックデジットを返す。
s = 0
For n = 1 To 11
p = Mid(base, 11 - n + 1, 1)
If n <= 6 Then
q = n + 1
Else
q = n - 5
End If
s = s + p * q
Next n
If s Mod 11 <= 1 Then
kensasuji_kojin = 0
Else
kensasuji_kojin = 11 - s Mod 11
End If
End Function
Function is_kojin_bango(kojin_bango)
'個人番号12桁を引数とする。
'桁数とチェックデジットが合致すればTrueを返す。
If Len(kojin_bango) <> 12 Then
is_kojin_bango = False
Else
base = Left(kojin_bango, 11)
cd = kensasuji_kojin(base)
If cd - Right(kojin_bango, 1) = 0 Then
is_kojin_bango = True
Else
is_kojin_bango = False
End If
End If
End Function
コメント