文字列の途中にある一部分を取り出したい
文字列の一部分を取り出す関数として有名なのが、LEFT関数とRIGHT関数ですね。
名前の通り、文字列の左から指定した文字数分を取り出すのがLEFT関数で、右から取り出すのがRIGHT関数です。
では文章の真ん中から数文字だけを取り出すにはどうするかというと、MID関数を使います。
MID関数とは、基になる文字列,切り取り開始位置,切り取りたい文字数を指定することで機能します。
実際にやってみましょう。
=MID(A1,8,6)
こうすることで、A1セルの8文字目から6文字分抜き出せます。
MID関数には弱点がある
文章の途中にある文字を抜き出すにはMID関数を使えばいい。
それは間違えではないのですが、弱点があります。
短文の途中から文字を抜き取るのは簡単ですが、長文から抜き取る場合、開始位置が何文字目にあたるのかを、数えないといけないんです。
いちおうこの場合の正解は
=MID(A1,44,6)
となるのですが、非常に面倒くさいです。
LEFTとRIGHTでMIDの弱点を克服
今回の文章から抜き出したいのは、後ろの方にある数文字です。
最初に登場したLEFT関数とRIGHT関数の合わせ技で、開始位置が何文字目なのかを、先頭から数えなくても済むようにできます。
今回の例であれば、このような式になります。
=LEFT(RIGHT(A1,9),6)
どういう事か、読み解いていきましょう。
まず、RIGHT(A1,9)の結果は、セイウチ太郎です。になります。
なので、この式の中にあるRIGHT(A1,9)をセイウチ太郎です。に置き換えると
=LEFT(セイウチ太郎です。,6)
となり、セイウチ太郎です。の左6文字を抜き出すことになるので、セイウチ太郎という結果がかえってきたということになります。
抜き出したい文字が長文の後ろの方にある場合、MID関数を使うよりも、LEFTとRIGHTを使ったほうが楽に抜き出せます。
他にもメリットがある
開始位置を探すのが楽な他にもメリットがありますので例を出しながら紹介していきます。
開始位置がブレても大丈夫
MID関数でいうところの開始が位置がブレても影響を受けない。
オートフィルも使える
参照文字列の部分を変えるだけでいいので、行数が増えてもオートフィルで下まで反映できる。
それでもMIDを使いたい
抜き出したい文字の前後に、文中1つしか登場しない単語があれば、MID関数でも文字数の可変に強い式が組めます。
この文章の場合、おじいさんと という単語と、とおばあさん という単語が、文中に1回ずつしか登場していないので、FIND関数でその単語の場所を探し出し、MID関数の開始位置や、文字数を割り出すのに使えます。
これによって、抜き出したい文字の文字数が変わっても同じ式のままで大丈夫ですし、さらに前後の文字数が変わっても耐えられます。
このように、抜き出したい文字がセイウチ(4文字)からセイウチ太郎(6文字)になっても、同じ式のままでちゃんと結果がかえってきます。
また、今回は少しでもわかりやすいように段階を分けてますが、1文にまとめる事もできます。
ただし、非常にややこしい式になって、後で見直すと解読に苦しむ式になりますが。
まとめ
文章の中から、一部の文字を取り出したいといっても、いろいろな手法があるということですね。
そして、それぞれにメリットがあり、デメリットもあるので、状況に応じて式が組めるよう、色々なパターンを知っておくと便利です。
コメント