マイナンバー(個人番号)の正誤を確認するユーザー定義関数

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

コメント

タイトルとURLをコピーしました