メールアドレスからドメインを取り出す(MID + FIND)
問題
問題文
マーケティングは会社のドメインで分類したいのですが、出力には完全なアドレスだけが A2 に残っています。@ より後ろをすべて Domain のセル C2 に取り出してください。[email protected] なら corp.com です。
@ の1つ後ろから取り始めます。ケース2 は2段階のドメイン、ケース3 はプラス付きのアドレスなので、@ の位置も長さも決め打ちできません。
問題のデータ
表でデータ全体を見る(選択・コピーできます)
| A | C | |
|---|---|---|
| 1 | Domain | |
| 2 | [email protected] |
ポイント解説
FIND("@", A2) は @ の位置を返し、MID が求めるのは「残したい最初の文字の位置」です。だから 1 を足します。足さないと結果が @ から始まります。長さは十分に大きければよく、LEN(A2) は安全な上限です。MID は文字列の終わりで止まります。
解き方のヒント
回答は C2 に入力します。送信時は 3 通りの入力で数式を再実行するので、数値を直接書くと必ず失敗します。数式はセルを参照してください。
- 回答セルは C2 です
- FIND("@", A2) で @ が何文字目か分かります
- MID は指定した位置から始まるので、@ の次の位置を渡します
- 形は =MID(?, FIND("@", ?) + 1, ?) です
模範解答
模範解答を表示(2 通り・まずは自分で試してみましょう)
解法1:@ の直後から MID
=MID(A2,FIND("@",A2)+1,LEN(A2))
FIND が @ を見つけ、+1 で次の文字へ移り、LEN(A2) が十分な長さを与えます。MID は文字列の終わりで止まるので、ドメインの長さを仮定する必要はありません。
解法2:残りの長さで RIGHT
=RIGHT(A2,LEN(A2)-FIND("@",A2))
@ より後ろの長さは、全体の長さから @ の位置を引いたものです。RIGHT は反対側から読むので、前半の長さが大きく変わるときに考えやすくなります。
関数ガイド
よくある質問
特定の文字より後ろのテキストを取り出すには?
FIND でその文字を探し、MID か RIGHT で残りを取ります。=MID(A2, FIND("@", A2) + 1, LEN(A2)) は区切り文字が何であっても使えます。@ をカンマやハイフンに置き換えるだけです。
FIND("@", A2) + 1 の +1 は何のため?
FIND は @ 自身の位置を返します。MID は渡した位置から取り始めるので、+1 がないと結果が @ から始まり、`corp.com` ではなく `@corp.com` になります。
ドットで分割してはいけないのですか?
確実ではありません。ドメインのドット数は .co.uk や .com.au のように異なり、@ より前にも anna.lee@ のようにドットが入ります。確実な区切りは @ だけです。