Excel関数 逆引き集 | 指定文字より前を取得 → LEFT+FIND

Excel
スポンサーリンク

概要

「ハイフンの手前だけ欲しい」
「@ の前のユーザー名だけ取りたい」
「’ID:12345′ から ‘ID:’ を除いた前半だけ取りたい」

こういう「指定した文字より前だけを取り出したい」ときに使える定番パターンが
LEFT + FIND の組み合わせです。

考え方はシンプルで、

  1. FIND で「指定文字が何文字目か」を調べる
  2. LEFT で「その1文字手前まで」を切り出す

という 2 ステップです。


基本の考え方とテンプレート

まずは型から覚えると楽です。

=LEFT(対象文字列, FIND(区切り文字, 対象文字列) - 1)

対象文字列
分割したい元の文字列が入ったセルです(例:A2)。

区切り文字
「ここより前を取りたい」という基準になる文字です。
代表例は「-」「@」「スペース」「/」など。

FIND(区切り文字, 対象文字列)
指定した文字が「左から何文字目にあるか」を返します。

その 1 つ前までを取りたいので、
- 1 をして LEFT の第 2 引数(文字数)に渡します。


基本パターン:ハイフンの前を取得する

A2 に「ABC-123」という文字列が入っているとします。
この「-」より前、「ABC」だけを取り出したい場合は次のように書きます。

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

FIND(“-“,A2) は 4 を返すので、4−1=3 文字 → 「ABC」が取り出されます。

この「区切りの1つ手前まで」を LEFT で取る、という考え方が基本です。


応用1:メールアドレスのユーザー名を取り出す

メールアドレスから「@ の前だけ」取りたいのも、まったく同じ型です。

A2 に「user@example.com」が入っているとします。
ユーザー名「user」だけ欲しい場合。

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

FIND(“@”,A2) が @ の位置(今回は 5)を返し、
5−1=4 文字 → 「user」が取り出せます。


応用2:ラベル付き文字列の「ラベル以外の前半」を取る

「ID:12345」のように、
ラベル+本体の形式で入っているデータから、
ラベルの前(実質的には「ラベルの一部」)を取ることもできます。

ただ、現実的には「ラベルの前」より「ラベルの後ろ」が欲しいことが多いので、
ここでは「区切り文字の前」を取るというパターンの理解に集中しましょう。

たとえば A2 に「商品A/分類X」のような文字列があり、
「/」より前だけ(商品名)を取得したいとき。

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

結果は「商品A」です。


応用3:スペースの前を取得して「姓だけ」取り出す

氏名が「姓+スペース+名」の形式になっている場合、
スペースの前だけ取ることで「姓」だけを切り出せます。

A2 に「山田 太郎」が入っているとして、
スペースより前、「山田」だけ欲しい場合。

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

FIND(” “,A2) でスペースの位置を取得し、その手前までを LEFT で取ります。

このテクニックは「区切りがスペースのときの姓抽出」の定番です。


応用4:FIND の特徴(大文字小文字を区別)に注意

FIND は「大文字小文字を区別する」検索なので、
例えば “X” を探すときに “x” はヒットしません。

区切り文字が記号(@ や – や /)の場合には問題になりませんが、
アルファベットを区切りとして使うときは「大文字・小文字」が一致しているか意識してください。

もし大文字小文字を無視して検索したい場合は、
SEARCH 関数を使って同じパターンにできます。

=LEFT(A2, SEARCH("x", A2) - 1)

エラー対策:区切り文字がないとき

FIND は、区切り文字が存在しないと #VALUE! エラーになります。
「なければ元の文字列のまま返したい」などの場合は、IFERROR と組み合わせます。

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

「-」があればその前までを返し、
なければ A2 そのものを返します。

区切りが必ずあるとは限らない実務データでは、この書き方をよく使います。


例題

問題1

A2 に「ABC-123」という文字列が入っています。
この中で、ハイフン「-」より前の文字列「ABC」だけを取り出す式を書いてください。

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

問題2

A2 に「user@example.com」というメールアドレスが入っています。
@ の前のユーザー名「user」だけを取り出す式を書いてください。

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

問題3

A2 に「山田 太郎」という氏名が入っています(姓と名の間は半角スペース)。
スペースより前の「姓」だけを取り出す式を書いてください。

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

問題4

A2 に「商品A/分類X」という文字列が入っています。
「/」より前の「商品A」だけを取り出す式を書いてください。

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

問題5

A2 にコードが入っています。
ハイフン「-」がある場合は、その前の部分だけを取り出し、
ハイフンがない場合は A2 の値をそのまま返したいです。
LEFT・FIND・IFERROR を使った式を書いてください。

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

「指定文字より前を取得 → LEFT+FIND」の本質は、この一行に集約されます。

=LEFT(文字列, FIND(区切り文字, 文字列) - 1)

この型さえ覚えておけば、「- の前」「@ の前」「スペースの前」など、
実務でよくある「○○の手前だけ欲しい」処理はかなりの部分をカバーできます。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました