DTPでよく使うエクセル関数の使い方を丁寧に紹介【文字列中の文字を抽出するMID関数】

前回のブログで、LEFT関数を紹介しましたが、文字列の途中の文字を抜き出したい場合は、MID関数を使います。

今回は、そのMID関数の使い方を紹介します。

目次

LEFT関数のおさらい

前回紹介しましたが、今一度ここでおさらいをしておきます。

LEFT関数は、文字列の左端から指定された数の文字を抽出します。
=LEFT(文字列[,文字数])
文字列    必ず指定。 取り出す文字を含む文字列(A2などのセル名や"あいう"などの文字)を指定します。
文字数    省略可能。 取り出す文字数を指定します。
詳しくは、【初心者向け・DTP・InDesign用】Excelで文字の位置を調べ文字を抽出・分割する―FIND・LEFT関数
例1:
B2:千葉県■市▲町12-34
=LEFT(B2,3)
結果:千葉県

MID関数

文字列の指定された位置から指定された文字数の文字を抽出します。

=MID(文字列, 開始位置, 文字数)文字列    必ず指定。 取り出す文字を含む文字列(A2などのセル名や"あいう"などの文字)を指定します。
開始位置    必ず指定。 文字列から取り出す先頭文字の位置を数値で指定します。 文字列の先頭文字の位置が 1 になります。
文字数    必ず指定。 取り出す文字数を指定します。
参照:MID 関数、MIDB 関数 - Office サポート
例2:
B2:千葉県■市▲町12-34
=MID(B2,4,4)
結果:12-34

FIND関数のおさらい

指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返します。

=FIND(検索文字列, 対象[, 開始位置])検索文字列    必ず指定。 検索する文字列を指定します。
対象    必ず指定。 検索文字列を含む文字列を指定します。
開始位置    省略可能。 検索を開始する位置を指定します。 対象の先頭文字から検索を開始するときは 1 を指定します。 開始位置を省略すると、1 を指定したと見なされます。
詳しくは、【初心者向け・DTP・InDesign用】Excelで文字の位置を調べ文字を抽出・分割する―FIND・LEFT関数
例3:
B2:千葉県■市▲町12-34
=FIND("県",B2)
結果:3

住所から県名・市名を抽出する

住所から県名・市名を抽出する場合、例1〜3のように単純に文字数を指定して分割抽出する、と言うわけにはいきません。

というのも、県名・市名は実際は各々文字数が不揃いです。

例えば、県名は「千葉県」のように3文字が多いですが、「神奈川県」「鹿児島県」のように4文字もあります。

市名もしかりです。

このように、文字数がバラバラの県名・市名を分割抽出するにはどうしたら良いのでしょうか。各々見ていきましょう。
県名の抽出
県名を抽出する方法は、「県」の左端からの位置数を見つけ、その数分左端から文字を抽出すれば、県名が取り出せます。

例1:
B2:千葉県■市▲町12-34
=LEFT(B2,3)
結果:千葉県
例3:
B2:千葉県■市▲町12-34
=FIND("県",B2)結果:3

例1で、LEFT(B2,3)の「3」が文字数になります。
また、例3で、FIND("県",B2)の「県」の位置数が「3」でした。

次に、県名が4文字の場合、

例4:
B2:神奈川県■市▲町12-34
=LEFT(B2,4)
結果:神奈川県

例5:
B2:神奈川県■市▲町12-34
=FIND("県",B2)
結果:4

つまり、LEFT(B2,●)の「●」の代わりにFIND("県",B2)を挿入すれば良いことが分かります。

=LEFT(B2,FIND("県",B2))

「千葉県」のような3文字県も、「神奈川県」のような4文字県も、これ1つの関数で取り出すことが出来ます。

市名の抽出
市名を抽出する方法は、まず2段階に分けて考えます。

まず最初は、市名はどこから始まりその最初の位置数はなにか、ということです。

とはいっても、市名の始めの文字に統一性はありませんので、市名のはじめをFIND関数で見つけることはできません。

しかし、その直前の文字はどうでしょうか。
そう、その直前の文字は「県」でした。

つまり、市名の最初の文字の位置数は、必ず「県」の位置数の次になりますので、

=FIND("県",B2)+1

が市名の最初の文字の位置数になります。

次に、市名はどこまでかは、一目瞭然、「市」までですので、「県」の位置数を求めたのと同じく、「市」の位置数は

=FIND("市",B2)

となります。

そして、市名の文字数を調べますが、実は「市名の最後の文字の位置数 」は、住所の左端から「市」までの文字数をも表しています。

また、「県」の位置数は「県名の文字数」をも表しています。

ですので、市名の文字数は、「市名の最後の文字の位置数 」から「県」の位置数を引いた数、つまりは、

=FIND("市",B2)-FIND("県",B2)

で求まります。

市名の最初の位置数と市の文字数が分かりましたので、MID関数を使って市名を抜き出すことが出来ます。

=MID(文字列, 開始位置, 文字数)より
=MID(B2,FIND("県",B2)+1,FIND("市",B2)-FIND("県",B2))

となります。







Comments

よく読まれている記事

CSSボタンでテキストを天地中央に揃えるとき、なぜボタン高と行高を一緒にするのか

FullCalendarの導入からカレンダー毎の色指定まで

FacebookページのフィードURLを取得しウォールを自サイトに表示

Bloggerテンプレートのちょっとしたカスタマイズのまとめ

document.write() 複数行の記述方法