Excelで住所を「都道府県・市区町村」に分割する方法 — 関数の限界と、崩れない現実解
顧客リストや物件リストで、1つのセルに入った住所を「都道府県」「市区町村」「それ以降(丁目・番地)」に分けたい——集計やエリア分けの前によくある作業です。少量なら、Excelの関数で十分に片付きます。この記事では、まず関数でのやり方を正直に紹介し、そのうえで「どこで崩れるのか」「リストが大きいときはどうするか」までを整理します。
まず都道府県だけなら、関数で切り出せる
都道府県の切り出しは、実はルールがシンプルです。日本の都道府県で名前が4文字なのは「神奈川県」「和歌山県」「鹿児島県」の3つだけ。それ以外はすべて3文字(東京都・北海道・大阪府・◯◯県)です。これを使えば、住所がA2にあるとき、都道府県はこう取り出せます。
=IF(MID(A2,4,1)="県", LEFT(A2,4), LEFT(A2,3))4文字目が「県」なら4文字、そうでなければ3文字を取り出す、という意味です。
残り(市区町村以降)は、=SUBSTITUTE(A2, 都道府県セル, "") のように都道府県を取り除けば得られます。ここまでは、関数で正確にできます。
つまずくのは「市区町村」— ここで機械的なルールが崩れる
問題は次の「市区町村」です。「市・区・町・村」の文字を目印に切ろうとすると、その文字が地名の途中にも出てくるため、あちこちで誤爆します。
| 住所の例 | 単純な区切りだと… | 正しくは |
|---|---|---|
| 市原市五所 | 「市」で切ると 市原市 ではなく「市」で誤分割 | 市原市 / 五所 |
| 横浜市青葉区あざみ野 | 「市」で切ると区が残る | 横浜市青葉区 / あざみ野 |
| 余市郡余市町黒川町 | 郡・町・町が入り乱れる | 余市郡余市町 / 黒川町 |
| 四日市市諏訪町 | 「市」が二度出る | 四日市市 / 諏訪町 |
政令指定都市の「市+区」、郡+町村、そして「市」「町」を名前に含む地名。これらを1本の関数で正しくさばくのは、現実には無理があります。例外パターンをIF文で積み増していくと、式は読めない長さになり、新しい例外が出るたびに壊れます。
もう1つの壁:表記ゆれ
関数は「文字が想定どおりに並んでいる」前提で動きます。ところが実務の住所リストは、全角と半角、漢数字と算用数字、「〇丁目」と「-」、旧字体(髙・﨑)、余分なスペースなどが混ざっています。入り口の表記がバラバラだと、どんな式も途中で外れます。分割の前に「文字を揃える」工程が必要になり、ここでさらに手間が増えます。
数十件で、住所の書き方がだいたい揃っているなら、上の都道府県の式+目視の手直しで終わります。無理に自動化する必要はありません。
リストが大きい・表記がバラバラなら「住所マスタ照合」
件数が多い、あるいは表記ゆれが激しいリストでは、文字を切るのではなく国が公開している住所マスタ(都道府県・市区町村・町丁目の正式な一覧)と照合して分けるのが確実です。「どこで切るか」をルールで決めるのではなく、「実在する住所に当てはめる」考え方に切り替えるわけです。
タスデータは、アップロードされた住所をまず正規化(全角半角・漢数字・ハイフンなどを自動で統一)してから、国の住所データと照合して緯度経度や最寄り駅などを付与します。この過程で表記ゆれを吸収するため、「分割が途中で崩れる」よくある失敗の多くが起きません。分割そのものが目的でも、正規化された住所として整った状態で扱えます。
手元のリストで、表記ゆれの吸収を試せます。
登録不要・30行まで無料。バラバラの住所が、整った住所+位置情報に変わります。
まとめ
都道府県は関数で切り出せます(4文字県だけ例外)。市区町村は、市+区・郡+町村・「市」を含む地名で機械的なルールが崩れるため、少量なら手直し、量が多い・表記がバラバラなら住所マスタとの照合が現実的だと思います。「文字を切る」から「実在の住所に当てる」へ——この発想の違いが、分割で消耗するかどうかの分かれ目になりやすい、というのが筆者の見方です。