この記事は更新して新しいブログに引っ越しました。
↓↓↓
関数で都道府県を抽出! IF・MID・LEFT|Excel|PCワークLABO
住所から都道府県だけを抜き出す
住所から都道府県だけを抜き出したい。
LEFT関数を使えば左から指定した数分文字を抜き出すことができる。
しかし、都道府県は3文字とは限らない。
そこで、2つの考え方からできる関数をそれぞれ紹介。
1つ目は、「県」とそれ以外に分けて抜き出すパターン。
2つ目は、都道府県の文字数で分けて抜き出すパターン。
「県」とそれ以外に分けて抜き出すパターン
47都道府県の内訳は1都1道2府43県。
43の県と、東京都・北海道・大阪府・京都府の4つ。
県の文字数はバラバラだけれど、県以外の4つはどれも漢字3文字だということがわかる。
そこで利用する関数はこちら。
=IFERROR(LEFT(A2,FIND(“県”,A2)),LEFT(A2,3))
式を文章にすると…
【A2】から「県」という文字を探して、見つけたら左からその文字まで抜き出して表示する。
結果がエラーなら(県が見つからなければ)【A2】の左から3文字分抜き出して表示する。
FIND関数は、検索した文字が見つからない場合エラーコードが表示される。
そこで、エラーだったら(=見つからなければ)という分岐が必要になりIFERROR関数を使うことになる。
では、詳しく見ていこう。
LEFT関数
文字列の左端から指定した数分文字を抜き出す関数
例:【A1】の文字列の左端から2文字分抜き出したい。
=LEFT(A1,2)
この結果は”あい”となる。
今回のセルではどうだろう。
=LEFT(A2,?)
【A2】のセルからLEFT関数で文字列を抜き出す。
?の抜き出す文字数は、「県」の文字のところまでとしたい。
「県」の文字のところ…とするためには、
「県」の文字を探すFIND関数が必要になる。
FIND関数
検索ワードが文字列の何番目にあるのかを求める関数。
例:【A1】のセルから”う”の文字を探して何文字目にあるのか求める。
(ここでは先頭の1文字目から探したいので「開始位置」は省略する。)
=FIND(“う”,A1)
この結果は”3”となる。
今回のセルで見てみよう。
=LEFT(A2,?)
先ほどの文字数?の部分にFIND関数を追加する。
=LEFT(A2,FIND(“県”,A2))
【A2】のセルから”県”を探して何文字目にあるか求め、LEFT関数でその数分左から抜き出す。
ここで注意すること、
FIND関数は検索した文字が見つからない場合、エラーで返ってくる。
つまり、”県”が見つからなかった場合エラーとなってしまう。
エラーになった場合の代替の関数を用意するために、IFERROR関数が必要になる。
IFERROR関数
エラーが表示される計算結果となる場合、代わりの計算式または値を表示させる関数。
例:【D列】に売り上げの前日比(前日比=今日÷前日)を求めたい。
ただし、割る数(この場合「前日」)が「0」だとエラーになってしまうので、
その場合はエラーコードの代わりに「前日なし」と表示したい。
【D2】に入る関数は、
=IFERROR(C2/B2,”前日なし”)
※ D列は%の表示形式が設定されている
今回の表で見てみよう。
LEFT関数までで出来た =LEFT(A2,FIND(“県”,A2)) にIFERROR関数を追加する。
=IFERROR(LEFT(A2,FIND(“県”,A2)),?)
【A2】のセルから”県”を見つけLEFT関数でそこまでの文字数を抜き出す。
もしエラーになる場合は…?
エラーになる場合=「県」が見つからない場合
つまり、東京都・北海道・大阪府・京都府の4つの場合ということ。
この共通点は、どれも漢字3文字。
ということは…「県」がなかったら左から3文字分抜き出せばいいよね。
=IFERROR(LEFT(A2,FIND(“県”,A2)),LEFT(A2,3))
【A2】のセルから”県”を見つけLEFT関数でそこまでの文字数を抜き出す。
もしエラーになる場合は左から3文字分抜き出す。
これで都道府県を抜き出すことができた。
次は、都道府県の文字数で分けて抽出するやり方の紹介。
都道府県の文字数で分けて抜き出すパターン
47都道府県のうち、神奈川県・和歌山県・鹿児島県の3つは「県」を含め漢字4文字。
それ以外はすべて漢字3文字。
これを利用すると、また違う関数で抜き出すことができる。
そこで利用する関数はこちら。
=IF(MID(A2,4,1)=”県”,LEFT(A2,4),LEFT(A2,3))
式を文章にすると…
【A2】の4文字目が「県」だったら左から4文字分抜き出して表示する。
そうでなければ【A2】の左から3文字分抜き出して表示する。
LEFT関数は既に上で解説しているのでIF関数とMID関数を解説。
IF関数
条件を満たしているかどうかを判定し、指定した内容を表示させる関数
例:B列(点数)が70以上なら「合格」そうでなければ「不合格」と表示したい。
【C2】に入る関数は、=IF(B2>=70,”合格”,”不合格”)
【C2】【C3】【C5】の結果は「合格」となり、【C4】の結果は「不合格」となる。
今回のセルで見てみよう。
=IF(?=”県”,LEFT(A2,4),LEFT(A2,3))
もし4文字目が「県」だったら【A2】の左から4文字分抜き出して表示し、
4文字目が「県」でなければ【A2】の左から3文字分抜き出して表示する。
4文字目を確認するためにMID関数を使っていこう。
MID関数
文字列の指定した位置から指定した数分文字を抜き出す関数
例:【A1】のセルの3文字目から2文字分抜き出したい。
=MID(A1,3,2)
この結果は”うえ”となる。
今回のセルで見てみよう。
先ほどの?のところは以下のようになる。
=IF(MID(A2,4,1)=”県”,LEFT(A2,4),LEFT(A2,3))
もし【A2】の4文字目が「県」だったら【A2】の左から4文字分抜き出して表示し、
4文字目が「県」でなければ【A2】の左から3文字分抜き出して表示する。
これで都道府県を抜き出すことができた。
市区郡を抜き出すやり方は「IFERROR・FIND関数で市区郡を抜き出そう/Excel」で紹介
住所録から後半(住所1以降)の文字列を抜き出す
【住所2】に、【住所1】以降の文字列を抜き出して表示させたい。
前回の記事で解説した文字数を数えて抜き出すパターンと、
抜き出した県名部分を消して表示させるパターンを紹介。
文字数を数えて抜き出すパターン
文字列の右から指定した数を抜き出す「RIGHT関数」を使いたい。
しかし、住所によって何文字目まで抜き出すのかは違ってくる。
そこで、文字数を求める「LEN関数」と組み合わせてみる。
【住所1】の文字数分引いたものを【住所】の文字列の右から抜き出して表示…と。
【C2】の関数はこうなる。
=RIGHT(A2,LEN(A2)-LEN(B2))
この関数を文章で書くと以下のようになる。
【A2】の文字数から【B2】の文字数引いた数を【A2】の文字列の右側から抜き出す。
では関数を一つずつ確認していこう。
RIGHT関数
文字列の右端から指定した数分文字を抜き出す関数
例:【A1】のセルの右から3文字分抜き出したい。
=RIGHT(A1,3)
この結果は”うえお”となる。
今回のセルではどうだろう。
=RIGHT(A2,?)
【A2】のセルからRIGHT関数で抜き出すのはわかる。
でも何文字抜き出せばいい?
そこで文字数を求めるLEN関数を使う。
LEN関数
文字列の長さ(文字数)を求める関数
長さを意味するlengthからきている。
例:【A1】のセルの文字列が何文字か知りたい。
=LEN(A1)
この結果は”5”となる。
今回の表で、先ほどのRIGHT関数と組み合わせてみよう。
=RIGHT(A2,?)
先ほどの文字数?の部分にLEN関数を追加する。
=RIGHT(A2,LEN(A2)-LEN(B2))
【A2】の文字数から【B2】の文字数を引いた数分【A2】の文字列の右側から抜き出す。
これで完成した。
抜き出した県名部分を消して表示させるパターン
【A列】の住所から【B列】の県名だけを削除したものを表示したい。
そこで、文字列を置き換える「SUBSTITUTE関数」を利用して
【住所】から、【住所1】の文字を非表示にしたものを表示…とする。
【C2】の関数はこうなる。
=SUBSTITUTE(A2,B2,””)
この関数を文章で書くと以下のようになる。
【A2】の文字列から【B2】の文字を非表示にしたものを表示する。
では関数を確認しよう。
SUBSTITUTE関数
検索した文字列を他の文字列に置き換える関数
例:【A列】の「(株)」を「株式会社」に置き換えて表示したい。
【B1】に入れる関数は以下のようになる。
=SUBSTITUTE(A1,”(株)”,”株式会社”)
これを今回のセルで使う。
【C2】の関数はこちら。
=SUBSTITUTE(A2,B2,””)
※ “”(ダブルクォーテーション2個連続)というのは非表示という意味。
この関数を文章で書くと、
【A2】の文字列から【B2】の文字列を見つけたら非表示に置き換えて表示する。
つまり、
【A2】の文字列から【B2】の文字列を消したものを表示する。
ということになり、後半の住所が完成する。
市区郡を抜き出すやり方は「IFERROR・FIND関数で市区郡を抜き出そう/Excel」で紹介