前に「マイナンバー法における法人番号の検査用数字」でJavaScriptを使ってチェックデジットを計算するサンプルを紹介しました。
今回はExcelで使えるユーザー定義関数を紹介します。
なお使用に際しては自己責任でお願いします。
検査数字を計算する関数
Function kensa_suji(kiso_bango)
s = 0
For n = 1 To 12
p = Mid(kiso_bango, 12 - n + 1, 1)
If n Mod 2 = 0 Then
q = 2
Else
q = 1
End If
s = s + p * q
Next n
kensa_suji = 9 - s Mod 9
End Function
s = 0
For n = 1 To 12
p = Mid(kiso_bango, 12 - n + 1, 1)
If n Mod 2 = 0 Then
q = 2
Else
q = 1
End If
s = s + p * q
Next n
kensa_suji = 9 - s Mod 9
End Function
基礎番号(12桁)から検査数字(チェックデジット)を計算します。
VisualBasicエディタに貼り付けるとワークシート上で使用できます。
「=kensa_suji(基礎番号)」とします。
検査数字の正否を判定する関数
Function is_hojin_bango(hojin_bango)
If Len(hojin_bango) <> 13 Then
is_hojin_bango = False
Else
kensa = kensa_suji(Right(hojin_bango, 12))
cd = Int(Left(hojin_bango, 1))
If kensa = cd Then
is_hojin_bango = True
Else
is_hojin_bango = False
End If
End If
End Function
If Len(hojin_bango) <> 13 Then
is_hojin_bango = False
Else
kensa = kensa_suji(Right(hojin_bango, 12))
cd = Int(Left(hojin_bango, 1))
If kensa = cd Then
is_hojin_bango = True
Else
is_hojin_bango = False
End If
End If
End Function
法人番号(13桁)の検査数字が正しいかどうかを判定します。
「=is_hojin_bango(法人番号)」とします。
上述の「kensa_suji」と併せて使います。両方をVisualBasicエディタに貼り付けます。
基礎番号(12桁)と検査数字(1桁)が正しければ「TRUE」、正しくなければ「FALSE」になります。数字以外があるとエラーになるので「#VALUE!」になります。
コメント