スポンサーリンク

住所から市区町村コードを設定する方法

関数の応用

住所データを元に、市区町村コード(地区コード、地方公共団体コードなど呼び方は色々)を設定する方法の紹介です。

給与支払報告書や、住民税に係る仕事などで役立つことがあります。

 

前提条件

やり方を紹介する前に、2点ほど条件があります。

それをクリアするために、当ブログで公開している住所分割エクセルを使う事が前提条件となること、予めご了承ください。

  • 住所が都道府県から始まっていること(例:千葉県千葉市美浜区1-1を千葉県千葉市とそれ以降でデータを分けられる)
  • 郡を省略した市区町村であること(例:北海道余市郡余市町は北海道余市町なっている)

 

住所分割エクセルについての記事はコチラ。

住所を都道府県、市区町村、それ以降に分割する
住所を都道府県、市区町村、それ以降に分割する仕組みを用意しました! よく問題にあがる市川市とか野々市市にも対応済のほか、郡山市など郡ありの市町村にも対応できたエクセルファイルができたので、すぐに使えるようにファイルを公開します。 特徴 ここ...

 

ファイルへの直リンクはコチラ。

住所分割エクセルファイル(ZIP圧縮ファイル)
https://excelkowaza.com/wp-content/uploads/2023/01/jusyo-bunkatu.zip

 

ただ、を抜いて、かつ都道府県から始まる状態(北海道余市町など)にする方法を確立されていれば、住所分割エクセルを使わない場合でも、当記事は参考にできるはずです。

 

住所から市区町村コードを呼び出す

それでは早速、住所データを元に市区町村コードを拾ってみましょう。

 

都道府県と市区町村のみのデータを作る

まずは都道府県と市区町村がくっついたデータ(千葉県千葉市など)を作ります。

住所分割エクセルを使うことで、必要なデータを作る事ができるので、それを活用します。

この時、余市郡余市町余市郡が除かれた状態にする事が重要なので、郡対応した住所かどうかを判定するという処理をします。

要は、住所分割エクセル上の第2作業部分が問題なしになっているかを判定し、問題なしなら第1作業の結果を、それ以外なら第2作業の結果をそのまま使うだけです。

なので式はシンプルで、最初のデータに対して=IF(E2="問題なし",C2,E2)となり、あとはオートフィルなどで最後まで反映させるだけです。

 

市区町村名と市区町村コードを紐づける(INDEX関数)

市区町村名までで区切れたら、あとは総務省が公開している市区町村コードリストと紐づけるだけです。

総務省|電子自治体|全国地方公共団体コード (soumu.go.jp)

住所分割エクセルにはすでに処理済のシートも用意してありますが、最新のリストをダウンロードして使う場合などは、欄外に都道府県名と市区町村名を結合したデータを用意しておいてください。

 

ここまで来たら、INDEX関数とMATCH関数を使って、市区町村名が一致したら、一番左にある市区町村コードを表示するように式を組んで、オートフィルなどで最後まで反映させれば完成です。

式:=INDEX(現在の団体!A:A,MATCH(I2,現在の団体!F:F,0),1)

INDEX関数は、範囲、行、列を指定すると、その位置にある値を取得してくれる関数です。

MATCH関数は、指定した値が何行目にあるかを探してくれる関数です。

これを組み合わせることで、VLOOKUP関数とは違って、検索した値よりも左側にあるデータを拾う事ができます。

MATCH関数を使う際は、最後に0(完全一致)を指定し忘れないよう気をつけましょう。

詳しい理由については下の記事にて。

MATCH関数 - 検索した文字が何行目、何列目にあるかを調べる
MATCH関数とは MATCH関数は、検索したい文字列指定を、検索範囲から探し出し、それが何行目(何列目)かを返す関数です。 公式説明では下記のようになってます。 指定された照合の種類に従って検査範囲内を検索し、検査値と一致する要素の、配列...

 

なんだこの式わけわからん!VLOOKUP関数ならわかるのに!

という方は次を参考にしてみてください。

 

VLOOKUP関数でもやってみる

せっかくなのでVLOOKUP関数でもやってみましょう。

この場合、あらかじめ自治体リストの市区町村名よりも右側に市区町村コードを用意しておく必要があります。

一見、ただの無駄作業にも思えますが、市区町村コードの頭5桁を使いたい場合は、こっちの方法も悪くないんです。

というわけで実際に5桁にしつつやってみましょう。

まずはLEFT関数を使って、団体コードを5ケタにしつつ、都道府県&市区町村名の列よりも右側にデータを用意します。

 

あとは都道府県&市区町村名をキーワードにVLOOKUP関数を使った式を作るだけです。

式:=VLOOKUP(I2,現在の団体!F:G,2,FALSE)

 

豆知識コーナー

エクセルには関係ないけど事務作業者として知っているとドヤれるかもしれない豆知識紹介コーナー

 

なんで都道府県と市区町村名をくっつけたの?

他県に同じ市区町村名があるからです。

たとえば北海道伊達市と福島県伊達市ですね。

他には、多いところだと北海道池田町、福井県池田町、長野県池田町、岐阜県池田町というように、4カ所も被ってる場合があります。

ちなみにこの池田町、長野県だけ読み方がイケダマチで、他はイケダチョウです。

 

なんで頭5桁の地区コード使うかもしれないの?

元のリストでは6桁ですが、実際に各市区町村に割り振られてるコードは頭5桁までで、最後の1ケタはチェックディジットとなっています。

そのため、うちは6桁目いらないよ!と言われる事がわりとあります。

ついでにいうと、頭2桁は都道府県を指していて、01xxxなら北海道、13xxxなら東京都、14xxxなら神奈川県のように見分けることができます。

コメント

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