概要
「ハイフンの“後ろ”だけ欲しい」
「@ の“後ろ”だけ取りたい(ドメインだけ)」
「’商品A/分類X’ から ‘分類X’ だけ抜き出したい」
こういう「指定した文字より“後ろ”だけを取り出す」定番パターンが
MID + FIND の組み合わせです。
考え方はとてもシンプルで、
- FIND で「指定文字が何文字目か」を調べる
- その 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(区切り文字, 文字列))
この型さえ体で覚えてしまえば、
「- の後ろ」「@ の後ろ」「スペースの後ろ」など、
実務で山ほど出てくる「○○の後ろだけ欲しい」パターンはほとんど攻略できます。
