スポンサーリンク

住所を都道府県、市区町村、それ以降に分割する

関数の応用

住所を都道府県、市区町村、それ以降に分割する仕組みを用意しましたので、公開します。

特徴

ここで公開している仕組みの特徴は下記のとおり。

  • 関数のみ、マクロ無し
  • 実在しない自治体をあぶり出せる
  • 市川市など、市区町村という単語の重複にも対応
  • 栃木県芳賀郡市貝町など、郡があっても省略されてても大丈夫

これらを見て、あー使えるかもって思われましたら、進んでください。

 

ファイルはこちら

式が長いわ3段階も踏んで処理するわでややこしい作りになってしまったので、今回はやり方の紹介ではなく、できた仕組み(エクセルファイル)を公開します。

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

いちおう直感で扱えるようにはしたつもりです。

住所列に分割したい住所をコピペなどでもってきて、そこより右のセルは式が組まれているので、オートフィルで最終行まで反映させるだけで使えます。

詳しい使い方の説明は次で。

使い方

今回用意した住所分割エクセルの使いかたです。

市区町村一覧の更新

市区町村の一覧を用意します。が、めったこ更新される事はないので、必要なら更新してください。

2023/1時点での最新版はすでに入ってますので、それ以降で反映させたい変更点などが出てきたら更新、必要なければここ(総務省からエクセルファイルを拝借~都道府県と市区町村を合体)は読み飛ばして大丈夫です。

最終的にF列に、北海道札幌市のように、都道府県名と市区町村名がくっついたデータがあればOKです。

また、更新した場合はシート名を現在の団体にするか、使い方シートにあるシート名セルの内容を編集してください。

総務省からエクセルファイルを拝借

総務省ホームページから、全国地方公共団体コードのエクセルファイルをダウンロードします。

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

 

現在の団体シートをコピー

全国地方公共団体コードのエクセルファイルから、現在の団体シートをコピー、または移動で持ってきます。

 

都道府県と市区町村を合体

現在の団体シートで、都道府県と市区町村を合体させておく。

今回は、F2に=B2&C2と式を入れ、オートフィルで最終行まで反映させます。

 

 

分割したい住所を用意

住所分割シートの住所列(B列)に、分割したい住所データをもってきます。

氏名列(A列)は自由枠なので、何をいれてもいいし、何もいれなくてもいいです。

 

式を最終行まで反映

C4(第一作業)~H4(市区町村の後ろ)までを選択し、オートフィルで最終行まで広げます。

サンプルデータが4行目まで入ってるのでC4~H4を選択してオートフィルと書いてますが、C2~H2を選択してフィルハンドルをドラッグして広げても大丈夫です。

数式のコピーペーストでもできますが、配列を使っているため、C2~H2をコピーしたら、C3~H3以降を範囲選択して貼り付けてください。

コピー元と貼り付け先が被ると、警告が表示されて貼り付けができません。

 

完成

もう完成です。

F列に都道府県、G列に市区町村、H列にそれ以降という形で分割されています。

 

解説

ここからは、どういう仕組みか詳しく知りたい方向けのお話。

一度市区町村チェック

まずは一度、住所データと市区町村リストを見比べて、存在すればその自治体を表示、無ければ要チェックを表示させます。

ここの仕組みについては、下記記事をご覧ください。

住所を市区町村で区切って分割する方法
全国事務作業員の皆さま、お待たせしました。 住所を市区町村で区切って分割する方法、しかも市川市や野々市市などの市が2つある自治体の他、余市町や村山市などの市区町村という単語が2つ含まれる自治体にも対応できる方法が用意できました...

 

郡なし住所を用意

総務省が配布している市区町村リストは、栃木県芳賀郡市貝町のように、市区町村の前に郡がある自治体は、栃木県市貝町というように、郡の部分が省略されています。

つまり前段階では、栃木県芳賀郡市貝町を探しても見つからないので、要チェック扱いになってるわけです。

そこで、要チェックだった場合、都道府県以降に郡の文字があるかを探し、郡部分を省略した住所を作り出しています。

これによって、栃木県芳賀郡市貝町は栃木県市貝町のように、郡部分が抜けた状態に変換されています。

 

もう一度市区町村チェック

先ほど、郡部分を除いた住所を作り出しました。

つまり、1回目のチェックでは栃木県芳賀郡市貝町を市区町村リストから探した結果見つからず要チェックとなりましたが、今回は郡部分のない栃木県市貝町を探すことになりますので、市区町村リストから探し出せます。

 

郡山市はどうなる

郡山市のように、郡じゃないけど郡の文字がある場合、第一チェックですでに郡山市が見つかっているため、そもそも郡なし住所を作る段階まで進まないようにすることで解決しています。

我ながら完璧では。

 

都道府県で分割

シンプルに、先頭3文字目以降の都道府県の単語を見つける事で、都と府が混在する東京都府中市にも、京都府にも、和歌山県のような4文字の県にも対応しています。

また、第二チェックが要チェックの場合は要チェックを表示することで、存在しない都道府県の場合にも対応しています。

 

市区町村で分割

第二チェック時点で要チェックならそもそも存在しない住所なので要チェックを表示。

第二チェック時点で問題なしなら、郡対応も関係ない第一チェックで完結してるので、第一チェックの結果から都道府県以降を表示。

第二チェックで住所が出ている場合は、元住所の文字数から、郡なし住所の文字数を引くなどして、うまい具合に郡部分も含めたうえで市区町村部分までが表示されるように頑張ってます。

とにかくうまい具合に何かしてるんです。

 

市区町村の後ろで分割

最後は簡単ですね。

もう市区町村までが何文字かわかっているので、それ以降を表示させて完了です。

 

完走した感想

ぬわああああん疲れたもおおおおん(定型文)

ケとヶ問題に続き、郡問題が発覚し、対処したら式が長すぎるわで、思った以上に苦戦しましたが、結果的にはかなり精度の高い分割の仕組みができたんじゃないでしょうか。

世に出てる市区町村で分割するネタの中でも、じゅうぶん上位の品質だと自負しております。

コメント

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