【Excel マクロ】全国地方公共団体コード検査数字算出マクロ

「kensasujiKeisan_Macro.zip」をダウンロード

市区町村コードは、国勢調査等で知らず知らずに利用している。利用方法は以下のとおりで、コード化されたのはかなり昔の話のようだ。

全国地方公共団体コードは、情報処理の効率化と円滑化に資するため、コード標準化の一環として、総務省(当時:自治省)が昭和43年に全国の都道府県及び市区町村のコードを設定したものです。以来、変更が生じた都度、メンテナンスを行っています。

総務省のHPより抜粋

このコードだが、全国地方公共団体コード仕様を確認すると、いわゆるチェックデジット(検査数字)が6桁目に仕込まれている。

参考(全国地方公共団体コード仕様):http://www.soumu.go.jp/main_content/000137948.pdf

上記の仕様に基づき、算出ロジックをにVBAマクロに落とし込むとこんな感じになる。

Sub test()

    Dim Codes As String, Code As Integer, _
    検査数字 As Integer, 積 As Integer, 和 As Integer, 積の和 As Integer, 余り As Integer, _
    i As Integer, j As Integer

    Dim 乗数(5) As Integer
    j = 6
    For i = 1 To 5
        乗数(i) = j
        j = j – 1
    Next i

    Codes = InputBox("全国地方公共団体コード(1~5桁目)を入力")

    積の和 = 0
    For i = 1 To 5
        Code = CInt(Mid(Codes, i, 1)) ‘1つづつ取り出し
        積 = Code * 乗数(i)
        積の和 = 積の和 + 積
        Debug.Print "コード:" & Code & " 乗数:" & 乗数(i); " 積の和:" & 積の和
    Next i

    If 積の和 < 11 Then
       検査数字 = 11 – 積の和
    Else
        余り = 積の和 Mod 11
        If 余り = 0 Then
            検査数字 = 1
        ElseIf 余り = 1 Then
            検査数字 = 0

        ElseIf 余り = 10 Then
            検査数字 = 1
        Else
            検査数字 = 11 – 余り
        End If
    End If

    MsgBox "検査数字は" & 検査数字
End Sub

コメント

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