概要
メールアドレスやURLの一覧から、
「@ 以降だけ」「ドメイン部分だけ」を抜き出したいシーンはよくあります。
yamada@example.com→example.comuser@test.co.jp→test.co.jphttps://www.example.com/page→www.example.com(考え方はほぼ同じ)
こういう「右側の“末尾部分”だけを取り出す」処理は、
RIGHT 関数 + FIND 関数 の組み合わせが定番です。
ここでは、メールアドレスを例にしながら、
ドメイン抽出の“型”を初心者向けにじっくり解説します。
基本の考え方
ドメインを抜き出すとき、いちばん分かりやすい「目印」は @(アットマーク) です。
メールアドレスは基本的に、
ユーザー名 @ ドメイン
という構造になっています。
なので、やりたいことを言葉でまとめると、
- FIND で「@ が何文字目にあるか」を調べる
- 全体の文字数から「@ までの文字数」を引いて、
「@ より右側の文字数(=ドメインの長さ)」を求める - RIGHT で、右からその文字数ぶん切り取る
という流れになります。
式にするとちょっと長く見えますが、
やっていることはこの 3 ステップだけです。
FIND 関数で「@ の位置」を知る
FIND の基本
書式はこうです。
=FIND(検索文字列, 対象文字列)
メールアドレスの中の「@」の位置を知りたいなら、こう書きます。
=FIND("@", A2)
A2 に
yamada@example.com
が入っている場合、
yamada が 6文字
7文字目が @
という感じなので、FIND("@", A2) の結果は 7 になります。
この「7」という数字を使って、
- 左側(ユーザー名)の長さ
- 右側(ドメイン)の長さ
を計算していきます。
LEN 関数で「全体の長さ」を知る
ドメインは「全体の長さ - @ までの長さ」で求められます。
全体の文字数を知るには LEN 関数を使います。
=LEN(A2)
A2 に yamada@example.com が入っていれば、
yamada(6文字)@(1文字)example.com(11文字)
合計 18 文字なので、LEN(A2) は 18 になります。
こうして、
- 全体の長さ:
LEN(A2) - @ の位置 :
FIND("@", A2)
が分かれば、ドメインの長さは
LEN(A2) - FIND("@", A2)
で求められる、というわけです。
例:18 − 7 = 11 → ドメイン部分は 11 文字
RIGHT+FIND でドメインだけ取り出す基本形
ここまでの要素を組み合わせると、
ドメイン抽出の“定番の型”はこうなります。
=RIGHT(
A2,
LEN(A2) - FIND("@", A2)
)
1行で書くと:
=RIGHT(A2, LEN(A2) - FIND("@", A2))
動きを整理すると、
FIND("@", A2)
→ 「@ が何文字目か」LEN(A2) - FIND("@", A2)
→ 「@ より右側の文字数」=「ドメインの長さ」RIGHT(A2, その文字数)
→ アドレスの右側から、その文字数だけ切り出す
→ 結果:「example.com」
A2 が user@test.co.jp の場合でも同じです。
FIND("@", A2)→@の位置LEN(A2)→ 全体の長さ- 差を取って、右からそのぶん切り出す →
test.co.jp
URLからドメインを取りたいときの考え方
今回のテーマは「RIGHT+FIND でのドメイン抽出」なので、
応用としてURLのドメインも考え方だけ触れておきます。
例えば A2 に
が入っているとします。
ここから www.example.com を抜き出すには、
「// の後ろから、次の / まで」など、ルールを決めてから
FIND を重ねて位置を取っていくことになります。
例のイメージ:
FIND("//", A2)で//の位置- その少し後からの文字列を対象に、最初の
/を探す - その間を MID で切り出す
メールアドレスより少し複雑になるので、
最初は「メールアドレスの @ 以降だけ抽出」のケースで
しっかり型を身につけるのが良いです。
例題
問題1
A2 に「yamada@example.com」というメールアドレスが入っています。
この中から、ドメイン部分「example.com」だけを取り出す式を書いてください。
RIGHT と FIND、LEN を使ってください。
=RIGHT(A2, LEN(A2) - FIND("@", A2))
問題2
A2 に「user@test.co.jp」というメールアドレスが入っています。
この中から「test.co.jp」だけを取り出す式を書いてください。
RIGHT+FIND の“型”をそのまま使ってください。
=RIGHT(A2, LEN(A2) - FIND("@", A2))
問題3
A2 に「tanaka.sales@company-example.co.jp」というメールアドレスが入っています。
ユーザー名やサブドメインの長さは毎回違いますが、
「@ 以降をすべてドメインとして抜き出す」式を書いてください。
=RIGHT(A2, LEN(A2) - FIND("@", A2))
問題4
A2 に「名前:山田太郎 yamada@example.com」という文字列が入っています。
まずは「右端から見てメールアドレス部分だけを取り出す」ことを考え、
「セルの一番右の 18 文字」を抜き出す式を書いてください。
(メールが常に 18 文字だと仮定します)
=RIGHT(A2, 18)
(※実務では長さが変わるので、@の位置から計算する方法に発展させます)
問題5
A2 に「abc@x.example.com」というメールアドレスが入っています。
この中から「x.example.com」を取り出したいです。
RIGHT と FIND、LEN を組み合わせた式を書いてください。
=RIGHT(A2, LEN(A2) - FIND("@", A2))
ドメイン抽出の本質は、この一行に集約されます。
=RIGHT(A2, LEN(A2) - FIND("@", A2))
「@ の位置を FIND で押さえ、そこから右側を RIGHT でまとめて抜く」
この型を体で覚えておくと、メールアドレスだけでなく、
他の “区切り文字の右側だけ欲しい” 場面にもどんどん応用できるようになります。
