エクセルで住所から都道府県と市や区名を関数で抽出・取り出す方法 市や区がない場合も取り出し可能! 365・2019・2016・2013・2010・2007対応

スポンサーリンク

以前、文字列関数の使用方法の解説で都道府県、市、区や町名を取り出す方法について記事にしました。

今回はその記事の上級者向けの、「住所一覧」から長さの違う都道府県名や、長さが違ったり、存在しない場合の「市」や「区」を取り出してセルに格納する方法です。

下記のような住所から、「都道府県」「市」「区」「町名」とそれぞれ取り出します。

文字列の長さが違ったり、該当する「市」や「区」がない場合も下図のように住所をセルに分割して格納可能です。

文字列関数である「LEFT関数」「MID関数」「RIGHT関数」「LEN関数」「FIND関数」を利用しますので、自信のない方はまずはこちらの記事からご覧ください。

エクセルの文字列関数でセルの文字列を自由自在に分割! LEFT関数・MID関数・RIGHT関数・LEN関数・FIND関数 365・2019・2016・2013・2010・2007対応
エクセルの文字列操作関数はたくさんあります。今回は、LEFT関数・MID関数・RIGHT関数・LEN関数・FIND関数を用いて住所から都道府県・市・区・町名に分割する方法です。長さの違う文字列を条件に当てはめて分割するA列...

今回の記事では上記の文字列関数については詳しく解説していませんのでご注意ください。

スポンサーリンク

住所録から都道府県を取り出す

ご存知のように、47都道府県の中で「神奈川県」「和歌山県」「鹿児島県」の3つだけが4文字となっています。「県」がつかない「北海道」「東京都」「京都府」「大阪府」はいずれも3文字です。

これを利用して、まずは「都道府県」を取り出す方法です。

「都道府県」を取り出すセルB2をクリックして、関数の挿入をクリックします。

「都道府県」を抜き出す

「都道府県」を取り出すには、「IF関数」を利用します。

「IF関数」で文字列の4番目が「県」であれば住所の左から4文字を取り出し、そうでなければ住所の左から3文字を取り出すという数式です。

4番目の文字が「県」なら左から4文字を、そうでなければ3文字を取り出す

ご覧の通り、B2セルに「都道府県」を取り出すことができました。

先頭の「都道府県」を取り出すことができた

その後、B2セルの数式をB8セルまでコピーして、うまく「都道府県」の抜き出しができていることを確認しでください。

文字数が違う「都道府県」を抽出

住所録から「市」を取り出す

ここからは少し難易度が上がります。

住所から「市」を抜き出します。下記の住所には、「市」がない住所もあります。

まずは、C2セルを選択して数式を入力します。

「市」の文字列を取得するには「MID関数」を利用します。

「MID関数」の引数ですが、「市」は「都道府県」の次から始まりますから開始位置はB2セル(都道府県)の文字列の長さに+1です。

抜き出す文字の長さ(文字数)は「FIND関数」を利用します。「市」という文字の場所を取得して、そこから「都道府県」(B2セル)の文字数を引いた数が「市」の文字数となります。

抜き出す文字数は、「大阪府大阪市(6文字)」-「大阪府(3文字)」となりますので、3文字になりますね。

「MID関数」の引数に「LEN関数」と「FIND関数」を利用

数式にすると「=MID(A2,LEN(B2)+1,FIND(“市”,A2)-LEN(B2))」となります。

無事、「大阪市」が取り出せたことを確認できます。

「市」を取り出すことができた

C2セルの数式をC8セルまでコピーをしてきちんと取り出すことができたか確認します。

すると、「市」がない「東京都」の住所ではエラーになっています。

「市」がない「東京都」の住所はエラーに

エラーを回避するには「IFERROR関数」で対処する必要がある

このように、「市」の文字列を含まない文字列で、「FIND関数」による「市」の文字の位置を取得しようとするとエラーとなります。

エラーを回避する必要がある場合には、「IFERROR関数」を利用する必要があります。

C2セルを改めて選択し、数式を入力します。

改めて数式を入力

「IFERROR関数」は、2つの引数を必要とします。

「=IFERROR(数式,エラーの場合の処理)」

数式がエラーでなければ数式の結果を表示、エラーの場合はエラーの場合の処理が行われます。

今回の数式は、先ほどC2セルに入力した数式が該当します。

=MID(A2,LEN(B2)+1,FIND(“市”,A2)-LEN(B2))

そして、エラーの場合は空白(“”)を表示する処理になります。

エラー処理が必要

「IFERROR関数」の「値」は下記のようになっています。

「IFERROR関数」の引数

確認して「OK」ボタンをクリックします。まずは、「大阪市」の取り出しができています。

「市」の抜き出し

C2セルの数式をC8セルまでコピーします。すると、「市」のない「東京都」の住所は空白になっています。

「FIND関数」で「市」という文字を検索しても見つからないためエラーとなり、「IFERROR関数」のエラー処理が行われ、東京の「市」のセルは空白になっています。

該当する文字列がなければ空白に

「区」の取り出しをする数式は

「区」の取り出しをする数式は、「市」を取り出す方法の応用です。D2セルをクリックして数式を入力します。

数式を入力

今回もエラー表示になりますが、まずは「区」を取り出す「MID関数」の引数の説明からです。

最初の引数である文字列はA2セルですが、2つ目の引数の開始位置「都道府県」の文字列の長さ+「市」の文字列の長さ+1となります。

数式では「LEN(B2)+LEN(C2)+1」となります。

「MID関数」開始位置

続いて「MID関数」の3つ目の引数、文字数「区」の文字のある位置-都道府県の文字数-市の文字数となります。

具体的には下記のように「FIND(“区”,A2)-LEN(B2)-LEN(C2)」となります。

「MID関数」2つ目の引数

「MID関数」のダイアログボックスで「OK」をクリックをすると、下記のように「区」の文字列を取り出すことができました。

D2セルには「=MID(A2, LEN(B2)+LEN&C2+1 ,FIND(“区”,A2)-LEN(B2)-LEN(C2))」と入力されています。

「区」の文字列を取り出した

D2セルの数式をD8セルまでコピーします。するとやはり「区」のない住所のセルはエラーになります。

「区」のない住所はエラー表示に

「区」のない住所のエラーを回避

それでは改めて、「IFERROR関数」を利用してエラーの場合は「空白」にするように設定しましょう。

「IFERROR関数」の1つ目の引数は、先程作成した「区」を取り出す数式、 MID(A2, LEN(B2)+LEN&C2+1 ,FIND(“区”,A2)-LEN(B2)-LEN(C2)) です。

2つ目の引数は空白を意味する「””」です。

「IFERROR関数」でエラー回避

「IFERROR関数」一つ目の引数は以下のようになります。

「IFERROR関数」一つ目の引数

「OK」ボタンをクリックして、D2セルをD8セルまでコピーしたものが下図となります。すべてのセルで「区」があれば表示、なければ非表示されているのが分かりますでしょうか。

「区」の文字列の取り出しに成功

最後に「町名」は「RIGHT関数」を利用

最後に町名は「RIGHT関数」を使用します。

E2セルをクリックして、「町名」を取り出す数式を作成しましょう。

最後に「町名」を取り出す

「RIGHT関数」の引数は2つありますが、2つ目の引数の解説です。

「RIGHT関数」の2つ目の引数

「RIGHT関数」の2つ目の引数は、「町名」の文字列の長さを取得します。

具体的には「住所の文字列の長さ」-「都道府県の文字列の長さ」-「市の文字列の長さ」-「区の文字列の長さ」となります。

数式では「LEN(A2)-LEN(B2)-LEN(C2)-LEN(D2)」と「LEN関数」のみで求めることが可能です。

町名の長さを求める数式

E2セルに数式を入れてE8セルまでコピーしたものが下図になります。

これで「住所」から文字列の長さの違う「都道府県」「市」「区」「町名」に分割し、該当する住所がない場合は「空白」にすることが完了しました。

お疲れさまでした。

「住所」を「都道府県」「市」「区」「町名」に分割

今回は、かなり解説を省略していますので、不明な点があればコメントいただけたら幸いです。

コメント

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