エクセルの文字列操作の中で比較的行われるのが、特定の文字より前を抽出するというものです。
例えば「00001-あいうえお」という文字があったとしたら、特定の文字「-」(ハイフン)より前の「あいうえお」部分のみを抽出するような処理を指しています。
- 00001:株式会社○○○○
- 01_起票、10_対応中
- 0120(123)456 のような電話番号
コードと名称が特定の文字でつながっている場合に、コード部分のみを抽出したい。電話番号の中から市外局番のみを抽出したい。
このようなケースは結構あるのではないでしょうか?
そこで今回は、エクセル関数を使用して特定の文字より前を抽出する方法と、 特定の文字より前を削除する方法をまとめました。
左から特定の文字までを抽出するこの方法は、LEFT関数、FIND関数を用いる事で実現する事ができます。
エクセルで特定の文字より前を抽出する方法
特定の文字より前を抽出するには、次の手順に沿って行います。
- 左から特定の文字のまでの位置を取得する
- 左から「特定の文字の位置-1」までを抽出する
1つ1つ解説していきます。
文字列の左から特定の文字のまでの位置を取得
まず、元の文字列のなかで、特定の文字が存在する位置を取得します。
この時使うのがFIND関数です。
FIND(検索文字列, 対象, [開始位置])
検索文字列:検索する文字列。(区切り文字など)
対象:検索元にする文字列やセル位置。
開始位置:検索を開始する位置。省略可能(省略時は1)。
内容:指定した検索文字列の位置を返す。
補足:検索文字列が対象の中で見つからない場合、エラー値 #VALUE! が返される。
A2セルに元の文字列「あいうえお:かきくけこ」、区切り文字が「:(コロン)」の場合、次の数式で特定の文字の位置を取得します。
=FIND(":", A2)
または
=FIND(":", "あいうえお:かきくけこ")
この処理の結果、区切り文字「:」の位置は6が取得できます。
文字列の左から「特定の文字の位置-1」までを抽出する
次に、元の文字列を左から「特定の文字の位置-1」まで抽出します。
ここで使用するのは、LEFT関数です。
LEFT(文字列, [文字数])
文字列:対象の文字列
文字数:抜き出す文字数(未指定の場合は1)
内容:指定した文字列の左からX文字分を返す関数。
A2セルに元の文字列「あいうえお:かきくけこ」 、B2セルに区切り文字の位置が設定されている場合、次の数式となります。
=LEFT(A2, FIND(":", A2) - 1 )
または
=LEFT("あいうえお:かきくけこ", FIND(":", "あいうえお:かきくけこ") - 1 )
ポイントは、特定の文字の位置-1 までの文字を抽出するということです。
結果は次のようになり、想定通り特定の文字より前の「あいうえお」が抽出できました。
上記の関数は、引数のなかにさらに関数が入っているため少し分かりづらいかもしれません。
そのような場合は1つ1つ分割すると関数の意味が分かりやすくなります。
左から特定の文字までを削除する方法
特定の文字より左を抽出できれば、特定の文字より前を削除することも可能になります。
さきほどは「あいうえお:かきくけこ」から「あいうえお」を抽出しましたが、逆に特定の文字より前の「あいうえお」部分を削除して「:かきくけこ」という文字列を抜き出す、ということをしたい場合に使えます。
特定の文字までを削除する方法としては、大きく次の2つがあります。
- 特定の文字より前の文字列を空文字に置換する
- 特定の文字より右の文字列を取得する
削除方法1:特定の文字より前の文字列を空文字に置換
エクセルの文字列置換関数であるSUBSTITUTEを用いれば、左から特定の文字までを空文字に置換=削除することができます。
構文は次の通りです。
=SUBSTITUTE(元の文字列, 特定の文字より左の文字列, "")
↓
=SUBSTITUTE("あいうえお:かきくけこ", "あいうえお", "")
この方法を使う場合の注意点は、元の文字列の中に、特定の文字より左の文字列が1つのみ含まれる場合に利用できるということです。
2つ以上含まれていると意図したとおりに削除できませんので気を付けましょう。
削除方法2:特定の文字より右の文字列を取得
特定の文字より前のを抽出する際はLEFT関数を使いましたが、RIGHT関数を用いて抽出することで、結果的に特定の文字までを削除することができます。
削除時の構文は次の通りです。
=RIGHT(元の文字列, 特定の文字の位置)
↓
=RIGHT("あいうえお:かきくけこ", FIND(":", A2) )
この方法で、左から特定の文字までを削除することができますが、1つ注意点があります。
この方法では、元の文字列の中に特定の文字が複数存在する場合、意図したとおりに動きません。
特定の文字より右を取得したい場合は、別記事の「Excelで右から特定の文字までを抽出するには?後ろからの抜き出し方法」を参考にしてみてください。
まとめ
エクセル関数を使用して特定の文字より前を抽出する方法をご紹介しました。
LEFT関数、FIND関数の2つで実現できますので、これを参考に仕事で活用してみてください。
また、この記事に書いたようなちょっとした困ったことでも、自分に経験や知識が足りないために対応できなかったり、時間をかけたわりに全然進まなかったりと、思うようにいかない事ってありますよね。そんなときは専門家に相談したり解決してもらったりする方法もありますので、一人で悩まず対処してみましょう。