以前、文字列関数の使用方法の解説で都道府県、市、区や町名を取り出す方法について記事にしました。
今回はその記事の上級者向けの、「住所一覧」から長さの違う都道府県名や、長さが違ったり、存在しない場合の「市」や「区」を取り出してセルに格納する方法です。
下記のような住所から、「都道府県」「市」「区」「町名」とそれぞれ取り出します。
文字列の長さが違ったり、該当する「市」や「区」がない場合も下図のように住所をセルに分割して格納可能です。
文字列関数である「LEFT関数」「MID関数」「RIGHT関数」「LEN関数」「FIND関数」を利用しますので、自信のない方はまずはこちらの記事からご覧ください。
今回の記事では上記の文字列関数については詳しく解説していませんのでご注意ください。
住所録から都道府県を取り出す
ご存知のように、47都道府県の中で「神奈川県」「和歌山県」「鹿児島県」の3つだけが4文字となっています。「県」がつかない「北海道」「東京都」「京都府」「大阪府」はいずれも3文字です。
これを利用して、まずは「都道府県」を取り出す方法です。
「都道府県」を取り出すセルB2をクリックして、関数の挿入をクリックします。
「都道府県」を取り出すには、「IF関数」を利用します。
「IF関数」で文字列の4番目が「県」であれば住所の左から4文字を取り出し、そうでなければ住所の左から3文字を取り出すという数式です。
ご覧の通り、B2セルに「都道府県」を取り出すことができました。
その後、B2セルの数式をB8セルまでコピーして、うまく「都道府県」の抜き出しができていることを確認しでください。
住所録から「市」を取り出す
ここからは少し難易度が上がります。
住所から「市」を抜き出します。下記の住所には、「市」がない住所もあります。
まずは、C2セルを選択して数式を入力します。
「市」の文字列を取得するには「MID関数」を利用します。
「MID関数」の引数ですが、「市」は「都道府県」の次から始まりますから開始位置はB2セル(都道府県)の文字列の長さに+1です。
抜き出す文字の長さ(文字数)は「FIND関数」を利用します。「市」という文字の場所を取得して、そこから「都道府県」(B2セル)の文字数を引いた数が「市」の文字数となります。
抜き出す文字数は、「大阪府大阪市(6文字)」-「大阪府(3文字)」となりますので、3文字になりますね。
数式にすると「=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関数」の「値」は下記のようになっています。
確認して「OK」ボタンをクリックします。まずは、「大阪市」の取り出しができています。
C2セルの数式をC8セルまでコピーします。すると、「市」のない「東京都」の住所は空白になっています。
「FIND関数」で「市」という文字を検索しても見つからないためエラーとなり、「IFERROR関数」のエラー処理が行われ、東京の「市」のセルは空白になっています。
「区」の取り出しをする数式は
「区」の取り出しをする数式は、「市」を取り出す方法の応用です。D2セルをクリックして数式を入力します。
今回もエラー表示になりますが、まずは「区」を取り出す「MID関数」の引数の説明からです。
最初の引数である文字列はA2セルですが、2つ目の引数の開始位置は「都道府県」の文字列の長さ+「市」の文字列の長さ+1となります。
数式では「LEN(B2)+LEN(C2)+1」となります。
続いて「MID関数」の3つ目の引数、文字数は「区」の文字のある位置-都道府県の文字数-市の文字数となります。
具体的には下記のように「FIND(“区”,A2)-LEN(B2)-LEN(C2)」となります。
「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関数」一つ目の引数は以下のようになります。
「OK」ボタンをクリックして、D2セルをD8セルまでコピーしたものが下図となります。すべてのセルで「区」があれば表示、なければ非表示されているのが分かりますでしょうか。
最後に「町名」は「RIGHT関数」を利用
最後に町名は「RIGHT関数」を使用します。
E2セルをクリックして、「町名」を取り出す数式を作成しましょう。
「RIGHT関数」の引数は2つありますが、2つ目の引数の解説です。
「RIGHT関数」の2つ目の引数は、「町名」の文字列の長さを取得します。
具体的には「住所の文字列の長さ」-「都道府県の文字列の長さ」-「市の文字列の長さ」-「区の文字列の長さ」となります。
数式では「LEN(A2)-LEN(B2)-LEN(C2)-LEN(D2)」と「LEN関数」のみで求めることが可能です。
E2セルに数式を入れてE8セルまでコピーしたものが下図になります。
これで「住所」から文字列の長さの違う「都道府県」「市」「区」「町名」に分割し、該当する住所がない場合は「空白」にすることが完了しました。
お疲れさまでした。
今回は、かなり解説を省略していますので、不明な点があればコメントいただけたら幸いです。
コメント