Excel で住所を都道府県と市区町村に分ける式と、式では切り間違える住所
住所録の住所が 1 つのセルに入っていると、都道府県ごとに並べ替えたり、宛名ソフトの列に合わせたりできません。都道府県は Excel の式で確実に分けられますが、市区町村は式だけでは切り間違える住所があります。
都道府県を取り出す式
A2 に住所があるとき、B2 に次の式を入れます。
=IF(MID(A2,4,1)="県",LEFT(A2,4),LEFT(A2,3))
都道府県の名前は、神奈川県・和歌山県・鹿児島県の 3 つだけが 4 文字で、ほかはすべて 3 文字です(北海道・東京都・大阪府・京都府も 3 文字)。そこで、4 文字目が「県」なら 4 文字、そうでなければ 3 文字を取り出します。
この式は、住所が都道府県から書かれていることが前提です。「千代田区…」のように都道府県が省かれた住所や、先頭に郵便番号や空白がある住所では、正しく取り出せません。
都道府県より後ろを取り出す式
C2 に次の式を入れると、B2 の都道府県を除いた残りが取り出せます。
=MID(A2,LEN(B2)+1,LEN(A2))
市区町村を分ける式と、その限界
市区町村は、残りの住所で最初に出てくる「市・区・町・村」までを取り出す式がよく使われます。
=LEFT(C2,MIN(FIND({"市","区","町","村"},C2&"市区町村")))
多くの住所はこれで分けられますが、名前の途中に「市・区・町・村」が入っている市区町村では、その位置で切ってしまいます。日本郵便の郵便番号データで数えると、次の 15 の市がそうです(政令指定都市の区と郡の町村を除く)。
- 名前の途中に「市」:四日市市・廿日市市・野々市市・市川市・市原市
- 名前の途中に「町」:町田市・大町市・十日町市
- 名前の途中に「村」:村山市・東村山市・武蔵村山市・田村市・羽村市・村上市・大村市
たとえば「四日市市諏訪町」は「四日市」、「町田市森野」は「町」、「東村山市本町」は「東村」で切れます。このほかにも、次のような住所は式では思ったとおりに分けられません。
- 郡の付く町村:「余市郡余市町」は「余市」、「西村山郡河北町」は「西村」で切れます。郡の名前に「市・町・村」が入っている郡は 6 つ(余市郡・東村山郡・西村山郡・北村山郡・田村郡・高市郡)、その中の町村は 14 あります。郡を除いて町村だけにしたいときも、式では分けにくくなります
- 政令指定都市の区:「横浜市中区」は「横浜市」で切れ、「中区」は残りに入ります。市と区を 1 つにしたいのか、分けたいのかで、式を変える必要があります
- 都道府県が書かれていない住所:「府中市」は東京都と広島県の両方にあるなど、市区町村の名前だけでは都道府県が決まらないことがあります
町域(町名)と番地、建物名をさらに分けるのは、式ではもっと難しくなります。町域の名前に漢数字が入る(「北一条西」など)、番地の書き方がそろっていない(「1-2-3」と「一丁目2番3号」)といった違いがあるためです。
確実に分けるには
市区町村や町域を確実に分けるには、文字の位置ではなく、実在する市区町村と町域の名前と照らし合わせる必要があります。このサイトの住所の分割は、日本郵便の郵便番号データにある名前と照らし合わせて、都道府県・市区町村・町域・番地・建物名に分けます。上の切り間違える市や郡の町村もそのまま分けられ、都道府県が書かれていない住所は市区町村から補います。郵便番号データの町域から作った約 1 万 7 千件の住所で、すべて正しく分けられることを確かめています。
住所録の CSV を読み込めば、分けた列を書き足した CSV を保存できます。読み込んだ住所録はどこにも送信しません。
分けたあとに
- 郵便番号と住所が合っているかは住所録の郵便番号チェックで確かめられます
- 同じ人が二重に載っていないかは住所録の重複チェックで確かめられます
- CSV を Excel で開くと郵便番号の先頭の 0 が消えることがあります。防ぎ方は先頭の 0 が消える理由と防ぎ方をご覧ください
参考にした資料
- 日本郵便 郵便番号データ(UTF-8 形式)のダウンロード:市区町村と町域の名前。上の市と郡の一覧は、このデータから数えました