Excelで特定の文字列を抽出する関数の使い方
今回紹介する関数
Excelで特定の文字列を抽出する3つの関数
文字列から特定の文字列を取り出す場合、「取り出す位置」と「取り出す文字数」を考えます。この「取り出す位置」によって、3つの関数を使い分けます。左側から文字列を取り出すときは「LEFT関数」、右側から取り出すときは「RIGHT関数」、その間の中央部分から取り出すには「MID関数」を使います。MID関数の「MID」は英語の中央「middle」の頭3文字。3つとも関数名がわかりやすいので覚えやすいと思います。
左側から文字列を取り出すLEFT関数
まずはLEFT関数から見ていきましょう。構文は次の通りです。例えば、セルB2に入力されている「あいうえお」という文字列から、左側3文字の「あいう」を取り出してセルC2に表示する場合、セルC2に次のようにLEFT関数を入力します。
結果は下図の通り。左側3文字が取り出されていますね。
右側から文字列を取り出すRIGHT関数
続いてRIGHT関数です。構文は次の通りです。LEFT関数とほぼ同じなので、問題ないと思います。先ほどのサンプルで、セルB2の「あいうえお」から右側の「うえお」を取り出してセルC3に表示する場合、セルC3に次のようにRIGHT関数を入力します。
結果は下図の通り。右側の3文字が取り出されていますね。
中央から文字列を取り出すMID関数
3つ目はMID関数です。LEFT関数とRIGHT関数は、文字列の「端」から取り出す関数だったので、セル番地以外に文字数を指定するだけでした。MID関数の場合は「中央」の文字列を取り出すので、文字数と併せて「左端から数えて何文字目から取り出すのか」を指定します。構文は次の通りです。先ほどのサンプルで、セルB2の「あいうえお」から中央の「いうえ」を取り出してセルC4に表示する場合、セルC4に次のようにMID関数を入力します。「い」から取り出すので開始位置は「2」です。
結果は下図の通り。中央の3文字が取り出されていますね。
なお、取り出す文字数を、文字数ではなく「バイト数」で指定する場合は、関数名の末尾に「B」が付いた「LEFTB関数」「RIGHTB関数」「MIDB関数」を使います(今回は文字数で指定するので使用しません)。
取り出す文字数を自在に指定するために
これまでご覧頂いたサンプルでは、取り出す文字数を直接指定していました。しかし、実際には、取り出す文字数がわからないこともあります。例えば、次のような「-(ハイフン)」を含む文字列を考えてみましょう。ここから「-」より左側の文字列だけを取り出したいのですが、取り出す文字数にバラツキがあります。この場合、「-」が左端から何文字目にあるのかがわかれば解決しますね。その文字位置から「1」引いた数が取り出したい文字数となるからです。
そこで紹介したいのが「FIND関数」です。
文字列を検索するFIND関数
FIND関数は、文字列内を検索して、指定した文字が左端から何文字目にあるのかを求める関数です。構文は次の通りです。例えば、セルB2に入力されている「あいうえおあいうえお」で、「う」を検索してその文字位置をセルC2に表示する場合、セルC2に次のように入力します。
結果は次の通り。「う」は2つありますが、最初に検索された「う」の文字位置「3」が表示されています。この「最初に検索された文字位置」が表示されるところも注意すべきポイントです。
同じ文字を検索したい場合
ちなみに、2つ目の「う」の文字位置を検索したい場合はどうすればよいのでしょうか。その場合は、FIND関数の3つ目の引数「開始位置」を利用します。この開始位置に、『1つ目の「う」の位置の次の文字位置』を指定することで2文字目の「う」を検索できます。つまり、FIND関数を入れ子にするわけです。
この数式をセルC3に入力した結果は次の通りです。2つ目の「う」の位置「8」が表示されています。今回の解説では利用しないテクニックですが、覚えておくと良いと思います。
LEFT関数とFIND関数の組み合わせ技
それでは、FIND関数の説明の冒頭でご覧頂いたサンプルを使って、LEFT関数とFIND関数の組み合わせ技を紹介しましょう。目的は「-」より左側の文字列を取り出して表示することです。まず、左側の文字列を取り出すにはLEFT関数を使います。そして、取り出す文字数を指定するところでFIND関数を使います。FIND関数で求められる「-」の文字位置から「1」引いた数値が「取り出す文字数」になります。このように「文字位置」の数値を「取り出す文字数」となるように加工して利用するところがポイントです。
この数式を、取り出した文字列を表示するセルB2~セルB5に入力します。セルB2に入力した数式をオートフィルでコピーすると良いでしょう。結果は下図の通り、「-」より左側の文字列が取り出されていますね。様々な文字数にもキチンと対応できています。
右側の文字列を取り出すにはLEN関数を活用
では、「-」より右側の文字列を取り出すにはどうすればよいでしょうか?やはり、取り出す文字数をどのように算出するかがポイントになります。下図をご覧下さい。右側の文字数は、文字列の総文字数から「-」の文字位置の数値を引くことで求められることがわかりますね。
文字列の総文字数を求めるには「LEN関数」を使います。構文は次の通りです。
右側の文字数を求める数式は、次のようになります。
したがって、右側の文字列を取り出す数式は下図のようになり、この数式をセルC2~C5に入力すると、右側の文字列が取り出されて表示されます。
SUBSTITUTE関数を利用する方法
右側の文字列を取り出す方法として、SUBSTITUTE関数を使う方法もあります。この場合、『もとの文字列』内の『取り出した左側の文字列に「-」をつなげた文字列』を『""(長さ0の文字列)』に置き換えます。したがって、入力する数式は次のようになります。
先ほどのサンプルのセルC2~C5にこの数式を入力してみました。同じ結果が表示されていますね。
【関連記事】