今回はMID関数について紹介します。
表の中にある文字列の一部を抜き出したいときに使う関数です。
MID関数は、対象セルの文字列を指定した位置から指定した文字数分抜き出すことができます。
MID関数:指定した文字列の指定した位置から指定した文字数分抜き出す関数です
例えば下のような表があったときに、市だけを抜き出すことができます。
MID関数は以下のように記述します。
=MID(文字列,開始位置,文字数)
となります。
上のセルに入れた数式はこちらです。
=MID(A10,4,3)
<A10セルの4番目から3文字抜き出す>
このMID関数ですが、実際は一つの関数で利用するよりも組み合わせて利用するほうが多いかもしれません。
前回、LEFT関数の紹介で○○県を抜き出す方法をご紹介しましたが都道府県が混ざった表から都道府県名を抜き出すにはどうしたらよいのでしょうか?
こちらは前回のおさらいです。
県だけであれば、FIND関数と組み合わせることで自動で抜き出すことができます。
=LEFT(A3,(FIND("県",A3,1))
FIND関数は別途記事を作りますが、FINDの中身は、A3セルで1文字目から数えて"県"という文字が何番目に来るかを表しています。
つまり、千葉県であればこのFIND関数の戻り値は3となり、和歌山県では4となります。
さあ、これで綺麗に抜き出せました。
しかし都道府県が入り混じった下のような表の場合、都道府県名を自動的に抜き出すにはどうしたらよいでしょうか。
FIND関数で"都" "道" "府" "県" を見つけてそれぞれをIFSでつなげれば行けそうですが、FIND関数は対象となる値がない場合には #VALUE! とエラー表示されてしまいます。
代わりに"都" "道" "府" "県" の有無をCOUNTIFで見つければよいかも知れません。
こんな関数で試してみました。(この関数ではうまくいかないので、小さ目に書きます)
=IFS(COUNTIF(A1,"*都*")<>0,MID(A1,1,FIND("都",A1)),COUNTIF(A1,"*道*")<>0,MID(A1,1,FIND("道",A1)),COUNTIF(A1,"*府*")<>0,MID(A1,1,FIND("府",A1)),COUNTIF(A1,"*県*")<>0,MID(A1,1,FIND("県",A1)))
一見うまくいったように見えましたが、京都に府がありません。
そうです、京都には”都”の文字が入っているので、本来は【COUNTIF(A1,"*府*")<>0】で引っかかってほしいところが、【COUNTIF(A1,"*都*")<>0】の関数で引っかかってしまうのです。上の関数では、京都府や○○県xx市都町 のように住所の一部に"都" "道" "府" "県"が含まれていると想定とは違うところで引っかかってしまいます。
どのようにすればうまく都道府県だけ抜き出せるでしょうか?
うまく抜き出すためには、都道府県が何番目に出てくるのかを押さえておけば簡単な関数で抜き出すことができます。
まずは、都道府県の中身を分類してみましょう。
47都道府県は、1道1都2府43県から成り立ち、"都"は東京都の1つだけで、"道"は北海道の1つだけ、”府”は大阪府と京都府の2つです。
残りの43件ですが、神奈川、和歌山、鹿児島だけ県名を入れると4文字となります。上の都道府はすべて3文字なので、このように考えることができます。
条件1:4文字目が県だったら4文字抜き出す
条件2:残りは都道府県を問わず、3文字抜き出す
これを関数で表すとこうなります。
=IF(MID(A1,4,1)="県",LEFT(A1,4),LEFT(A1,3))
結果もうまく出力できました。
ですがこの関数の記述方法では、
都道府県名が1文字目から入っていること(頭に他の文字やスペースが入っていないこと)が前提となりますので、コピペして使えないと言う時には対象のリストの中に先頭にスペースや他の文字がないか確認して下さい。
今回はMID関数と、住所から都道府県を抜き出す方法をご紹介しました。