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

Excel
スポンサーリンク

概要

「ハイフンの“後ろ”だけ欲しい」
「@ の“後ろ”だけ取りたい(ドメインだけ)」
「’商品A/分類X’ から ‘分類X’ だけ抜き出したい」

こういう「指定した文字より“後ろ”だけを取り出す」定番パターンが
MID + FIND の組み合わせです。

考え方はとてもシンプルで、

  1. FIND で「指定文字が何文字目か」を調べる
  2. その 1 文字後ろから、残り全部を MID で取り出す

という 2 ステップで設計します。


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

まずは“型”から覚えると一気に楽になります。

指定した文字(区切り文字)より「後ろ全部」を取り出す基本形はこれです。

=MID(対象文字列, FIND(区切り文字, 対象文字列) + 1, LEN(対象文字列) - FIND(区切り文字, 対象文字列))

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

区切り文字
「ここより後ろが欲しい」という基準となる文字。
代表例は 「-」「@」「/」「スペース」などです。

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

その次の文字から取りたいので、開始位置は
FIND(区切り文字, 対象文字列) + 1
になります。

残り全部を取りたいので、文字数は
LEN(対象文字列) − FIND(区切り文字, 対象文字列)
としています。

見た目は少し長いですが、やっていることは「区切り文字の後ろ全部」です。


基本パターン:ハイフンの後ろを取得

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

=MID(A2, FIND("-", A2) + 1, LEN(A2) - FIND("-", A2))

FIND(“-“,A2) は 4 を返します。
開始位置は 4+1=5 文字目(1→A,2→B,3→C,4→-,5→1)。
文字数は LEN(A2)−4 ですから、「123」部分がそのまま取り出されます。

「ハイフンの後ろ全部」が欲しいときの定番の書き方です。


応用1:メールアドレスのドメインだけ取り出す

A2 に「user@example.com」というメールアドレスがあるとします。
@ の後ろ、「example.com」だけ欲しい場合もまったく同じ型で書けます。

=MID(A2, FIND("@", A2) + 1, LEN(A2) - FIND("@", A2))

FIND(“@”,A2) が @ の位置(今回は 5)を返し、
開始位置は 5+1=6 文字目、「e」から最後までが取得されます。

ユーザー名(@ の前)を LEFT+FIND で、
ドメイン(@ の後ろ)を MID+FIND で、というのは実務で本当によく使う組み合わせです。


応用2:スラッシュの後ろを取り出す(分類・階層名など)

A2 に「商品A/分類X」という文字列があるとします。
「/」の後ろ、「分類X」だけ取り出したい場合。

=MID(A2, FIND("/", A2) + 1, LEN(A2) - FIND("/", A2))

同様に、パス「フォルダ1/フォルダ2/ファイル名」のような文字列から
「最後の / より後ろ」だけ取り出す場合は、やや工夫が必要ですが、
まずは「最初の / の後ろ全部」というシンプルなパターンから慣れていくのがおすすめです。


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

A2 に「山田 太郎」という氏名が入っているとします(姓と名の間にスペース)。
スペースの後ろだけ取り出すと、「太郎」だけを抽出できます。

=MID(A2, FIND(" ", A2) + 1, LEN(A2) - FIND(" ", A2))

FIND(” “,A2) でスペースの位置を取得し、
その 1 文字後ろから最後までを MID で取り出しています。

姓だけ欲しいときは LEFT+FIND、名だけ欲しいときは MID+FIND、というセットで覚えると便利です。


FIND の特徴と SEARCH との違い

FIND は「大文字小文字を区別する」検索です。
区切り文字が記号(@ や – や /)の場合は影響がありませんが、
アルファベットを区切りとして使う場合、「A」と「a」は別として扱われます。

大文字小文字を無視して検索したい場合は、SEARCH 関数に置き換えて、
まったく同じ型で書くこともできます。

=MID(A2, SEARCH("x", A2) + 1, LEN(A2) - SEARCH("x", A2))

「x の後ろ全部」が、大小文字に関係なく取得できます。


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

FIND は、区切り文字が見つからないと #VALUE! エラーになります。
「区切りがない場合は、文字列全体をそのまま返したい」ようなときは、IFERROR と組み合わせます。

=IFERROR(
  MID(A2, FIND("-", A2) + 1, LEN(A2) - FIND("-", A2)),
  A2
)

ハイフンがあれば「後ろ部分」、
なければ A2 の値そのものを返します。

実務のデータでは「たまに区切りがない行」が混ざることが多いので、
IFERROR とのセットはかなり実用的です。


例題

問題1

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

=MID(A2, FIND("-", A2) + 1, LEN(A2) - FIND("-", A2))

問題2

A2 に「user@example.com」というメールアドレスが入っています。
@ より後ろのドメイン部分「example.com」だけを取り出す式を書いてください。

=MID(A2, FIND("@", A2) + 1, LEN(A2) - FIND("@", A2))

問題3

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

=MID(A2, FIND("/", A2) + 1, LEN(A2) - FIND("/", A2))

問題4

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

=MID(A2, FIND(" ", A2) + 1, LEN(A2) - FIND(" ", A2))

問題5

A2 にコードが入っています。
もしハイフン「-」が含まれていれば、その後ろの部分だけを取り出し、
ハイフンが含まれていなければ A2 の値をそのまま返したいです。
MID・FIND・IFERROR を組み合わせた式を書いてください。

=IFERROR(
  MID(A2, FIND("-", A2) + 1, LEN(A2) - FIND("-", A2)),
  A2
)

「指定文字より後を取得 → MID+FIND」の本質は、この一行です。

=MID(文字列, FIND(区切り文字, 文字列) + 1, LEN(文字列) - FIND(区切り文字, 文字列))

この型さえ体で覚えてしまえば、
「- の後ろ」「@ の後ろ」「スペースの後ろ」など、
実務で山ほど出てくる「○○の後ろだけ欲しい」パターンはほとんど攻略できます。

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