指定文字より左または右の文字列をエクセル関数で抜き出す方法

エクセルは表計算ソフトですが、課題管理表やQA表など、計算はしないけれど表として用いる事って割とあります。同じように、表計算ソフトとしてではなく、文書作成ツールとしてエクセルを使う事も多々あるのではないでしょうか。

私の場合、ちょっとした編集をしたい場合はWordよりもExcelを使う傾向にあります。エクセルが持っている関数をちゃちゃっと使用することで、文字列の置換や簡単な編集をすぐに行う事ができるためです。

比較的よく使うのは、指定文字より左側または指定文字より右側の文字を抜き出すという作業です。文字列の中に2つの情報が入っている時に、片方を取り出したい。そんな事が仕事をする中では多々発生します。一つ一つ抜き出すのもありではありますが、対象データが多いと時間がかかる。

そこで今回は、エクセル関数を使用して指定文字より左または右の文字列を抜き出す方法をご紹介します。LEFT関数、RIGHT関数、FIND関数、LEN関数の4つのExcel関数を用いる事で、ほとんどやりたい事を実現する事ができます。

どんな場合に切り抜きをしたいか

指定文字より左または右で文字を切抜きしたいケースというのは、例えば次のようなもがあります。仕事をしていると良く発生するものかと思います。

コードと文字が混在するような場合

一番良くあるケースとしては、コードと文字が混在する場合に

  • コード部分のみ取得したい
  • 文字列部分のみ取得したい

というケースかと思います。例えば次のようなものです。

コードと文字が混在する例
  • 00001:株式会社○○○○
  • 01_起票、10_対応中
  • A01関東、A02関西

区切り文字(例えば:や_)で区切られている場合もあれば、固定文字長で分かれているような場合もあります。

特定文字で複数文字が区切られているような場合

ある文字列を区切り文字で複数区切っているような場合、それぞれを取得したい事があります。

区切り文字で複数文字が存在する例

あああああ:000001:新規 のような区切り文字で連結されている

0120(123)456 のような電話番号

上記の例は文字列がコロン(:)や半角カッコで区切られているようなものですが、

  • あああああ
  • 000001
  • 新規

  • 0120
  • 123
  • 456

のように3つの情報をそれぞれ取得したいような場合にも、エクセル関数を使って簡単に取得する事ができます。

エクセル関数を用いて特定文字の左または右を切り取る方法

文字数で抜き出す場合(LEFT関数、RIGHT関数)

指定した文字列を左から抜き出したい場合、LEFTB関数またはLEFT関数を使用します。

LEFT関数

LEFT(文字列, [文字数])

文字列:対象の文字列
文字数:抜き出す文字数(未指定の場合は1)

内容:指定した文字列の左からX文字分を返す関数。

LEFTB関数

LEFTB(文字列, [バイト数])

文字列:対象の文字列
バイト数:抜き出すバイト数(未指定の場合は1)

内容:指定した文字列の左からXバイト分を返す関数。

LEFT関数とLEFTB関数は共に同じ動きをしますが、違いは第2引数が文字数指定なのかか、バイト数指定なのかです。

ある文字列(あいうえおかきくけこ)を左から5文字分抜き出したいような場合、

=LEFT("あいうえおかきくけこ", 5)

とすると、「あいうえお」が結果として返されます。

LEFT関数で左5文字を表示する例

左側から抜き出すのと同様に、右側から指定文字数分を抜き出す関数もあります。それがRIGHT関数、RIGHTB関数です。

RIGHT関数

RIGHT(文字列, [文字数])

文字列:対象の文字列
文字数:抜き出す文字数(未指定の場合は1)

内容:指定した文字列の右からX文字分を返す関数。

RIGHTB関数

RIGHTB(文字列, [バイト数])

文字列:対象の文字列
バイト数:抜き出すバイト数(未指定の場合は1)

内容:指定した文字列の右からXバイト分を返す関数。

LEFT関数とは逆で、文字列を右側から指定文字数(バイト数)分を抜き出すことができます。

LEFT関数で右5文字を表示する例

このように、左からXX文字または右からXX文字など、文字数が決まっているような場合は、RIGHT関数・LEFT関数で抜き出すことができます。

補足:バイト数について

日本語(漢字、全角カタカナ、全角ひらがな)は2バイト文字です。

例えば「あいうえお」の場合、文字数は5ですが、バイト数は10となります。

※日本語の文字列に対して5バイト分を取得した場合、以下のような結果になります。日本語は2バイト文字のため奇数のバイト数を第2引数に指定すると自分が予期していない結果になる可能性があるため、日本語が含まれる場合はバイト数での指定はしないようにしましょう。

特定の文字を条件に前後で抜き出す場合(FIND関数、FINDB関数)

さきほどのLEFT関数・RIGHT関数と、これからご紹介するLEN関数、FIND関数を組み合わせる事で、特定の文字より前または後の文字列を抜き出すことができるようになります。

FIND関数

FIND(検索文字列, 対象, [開始位置])

検索文字列:検索する文字列。(区切り文字など)
対象:検索元にする文字列やセル位置。
開始位置:検索を開始する位置。省略可能(省略時は1)。

内容:指定した検索文字列の位置を返す。

補足:検索文字列が対象の中で見つからない場合、エラー値 #VALUE! が返される。

FINDB関数

FINDB(検索文字列, 対象, [開始位置])

検索文字列:検索する文字列。(区切り文字など)
対象:検索元にする文字列やセル位置。
開始位置:検索を開始する位置。省略可能(省略時は1)。

内容:指定した検索文字列の位置(バイト数)を返す。

補足:検索文字列が対象の中で見つからない場合、エラー値 #VALUE! が返される。

結果を文字数で返すのかバイト数で返すのかによって、FIND関数・FINDB関数のどちらを使うのかが分かれます。日本語を含む文字の場合はFIND関数を使ったほうが無難です。

FIND関数、LEFT関数/RIGHT関数を用いる事で、特定文字より左または右の文字列を抜き出すことができます。例えば、「あいうえお:かきくけこ」という文字列に対して、区切り文字「:」前後の文字を取得する場合、次のように考えます。

特定文字より左側の文字列を抜き出す考え方
  1. FIND関数で、 「あいうえお:かきくけこ」 ので区切り文字(:)の位置を取得する
  2. LEFT関数で、 「あいうえお:かきくけこ」 を左から(区切り文字位置-1)分だけ取得する。

例) 「あいうえお:かきくけこ」 がA2セルに設定されている場合

=LEFT(A2, FIND(":", A2) - 1 )

区切り文字より左を取得した結果
特定文字より右側の文字列を抜き出す考え方
  1. FIND関数で、 「あいうえお:かきくけこ」 ので区切り文字(:)の位置を取得する
  2. LEN関数で、 「あいうえお:かきくけこ」 の全体の文字数を取得する。
  3. LRIGHT関数で、 「あいうえお:かきくけこ」 を右から(全体の文字数 - 区切り文字位置)分だけ取得する。

例) 「あいうえお:かきくけこ」 が A2 セルに設定されている場合

=RIGHT(A2, LEN(A2) - FIND(":", A2))

区切り文字より右側を取得した結果

このように区切り文字前後の文字列を取得できます。

上記の関数は、引数のなかに関数が入っているため少し分かりづらいかもしれません。そのような場合は分割すると関数の意味が分かりやすくなります。

特定文字より左または右を取得する関数をもう少し分解した例

上記は、先ほどの例について「:の位置(区切り文字の位置)」「全体の長さ」「:(区切り文字)より前までの文字数」「:(区切り文字)より後文字数」でそれぞれ数値をB2~E2に表示し、LEFT関数・RIGHT関数ではB2~E2までのセルを利用して作成した結果です。

結果としては同じになりますが、LEFT関数、RIGHT関数に指定している引数がシンプルになったので、意味が分かりやすくなったのではないでしょうか。

まとめ

LEFT関数、RIGHT関数、FIND関数、LEN関数を用いて、特定の文字より前または後の文字を抜き出す方法をご紹介しました。

この例を参考に、仕事で活用してみてください。

Twitterでフォローしよう

おすすめの記事