エクセルで住所から市区町村名を関数で修正なく抽出する方法

ここでは、エクセルで「住所から市区町村名を関数で抽出する方法」を解説します。

 

FIND関数などを使った方法の問題点を解消した、手修正の必要のない方法です。

1.まずはやりたいことを確認

まずは、やりたいことを例を含めて確認します。

 

1-1.住所から市区町村名を抜き出したい

やりたいことは、「住所から市区町村名を抜き出す」です。

 

どんな都道府県名や郡名で、常に的確な市区町村名を抽出し、場合によっての手修正の必要がないことが理想です。

 

1-2.例を確認

一つ例を見てみましょう。

上の表は住所録です。B列には、その人の住所が入っています。

 

このような、都道府県名も郡名も含まれる住所から「市区町村名」のみを抜き出します。

上のような感じです。そして、全国どの住所でも手直しの必要なく正しい市区町村名を抽出できれば完璧です。

2.FIND関数を使った抽出は手直しが必要

住所から市区町村を抽出する説明で、よく使われるのがFIND関数です。

細かい説明は省きますが、FIND関数を使うと住所から「市・区・町・村」を文字を見つけ出し、抜き出すことができます。

 

しかし一方で、例えば「千葉県市川市」などのように「市・区・町・村」が複数入っている住所には対応できません。

 

つまり、FIND関数を使うと住所によっては手直しが必要なのです。

3.手修正なく市区町村名を抽出する方法

では、手修正の必要なく市区町村名を抽出する方法を見てみます。

 

3-1.大まかな流れ

まず、大まかな流れは次の通りです。

大まかな流れ
  • 総務省の「都道府県コード及び市区町村コード」のリストをダウンロード
  • 市区町村名の文字数が多い順に並び変え
  • リストと住所を照らし合わせ、市町村名を抽出

3-2.数式の形

使う数式の形は、次の通りです。

=IFERROR(INDEX(リストの市区町村列,1/LARGE(INDEX(ISNUMBER(FIND(リストの市区町村列,住所))/ROW(リストの市区町村列),0),1)-1),"要チェック")

一見長くてめんどくさそうですが、引数(指定する項目)は「リストの市区町村列」と「住所」の2種類と少ないため意外と簡単です。

 

3-3.数式の作り方

では、実際に数式を作ってみます。

 

例に使うのは先ほどの表です。

セルB2の住所からセルE2へ、市区町村名を抽出します。

 

以下、手順です。

 

(1)総務省のホームページから、最新の「都道府県コード及び市区町村コード(Excel版)」をダウンロードする

 ⇒ 総務省ホームーページを開く

 

(2)「市区町村コード」ファイルを開く

 

(3)次の数式をコピーし、セルF2に貼り付ける

【コピーする数式】

=IF(LEN(C2)="",0,LEN(C2))

 

(4)セルF2の右下をダブルクリックし、数式を最下段までコピーする

 

(5)「並び替え」でF列の数値の多い順にする

 

(6)F列の数式を消す

※ 消さなくてもいいですが、データが多い時には動きが遅くなる可能性があります

 

(7)市区町村名を取り出したいデータのあるファイルに新しいシートを作り、リストをコピーする

※ シート全体をコピーして、新しく作成したシートに貼り付けます

 

(8)次の数式をコピーし、市区町村名を表示させたいセルに貼り付ける

【コピーする数式】

=IFERROR(INDEX(リストの市区町村列,1/LARGE(INDEX(ISNUMBER(FIND(リストの市区町村列,住所))/ROW(リストの市区町村列),0),1)-1),"要チェック")

 

(9)「リストの市区町村列」3ヶ所の文字を消し、市区町村リストの市区町村列を指定する

※リストのタイトル行は除きます

※指定後にF4キーを1回押して「$」を4つ付けます

 

(10)「住所」の文字を消し、住所の入っているセルを指定する

※どちらも指定後にF4キーを1回押して「$」を4つ付けます

 

(11)Enterキーを押す

 

(12)入れた数式を他のセルにコピーすれば完了

これで、住所から市区町村名を抽出できます。

 

市区町村名は、住所からではなくリストから取り出しており、もしかしたらイメージしていたものと違うかもしれませんが、結果が良ければ…と考えてもらえればと思います。

 

以上、参考になれば幸いです。

 


口コミ・評判のいいExcel本の紹介】


Top