Excelで顧客リストや会員データ、社内アカウント一覧を整理していると、メールアドレスから「@の前だけ」を取り出したい場面があります。
たとえば、ichiro_sato@gmail.com というメールアドレスから、ichiro_sato だけを抽出したいケースです。
- メールアドレスからユーザー名だけを取り出したい
- 顧客リストからログインIDのような文字列を作りたい
- 「@」以降のドメイン部分を削除したい
- 大量のメールアドレスを一括で整理したい
このような作業は手入力で行うと時間がかかりますが、Excelの関数を使えば一括で処理できます。
この記事では、FIND関数とLEFT関数を使ってメールアドレスからユーザー名を抽出する方法を紹介します。あわせて、Microsoft 365やExcel 2024で使えるTEXTBEFORE関数、ドメイン名の取り出し方、エラーが出たときの対処法も整理します。
チエバコメールアドレスの「@より前」を取り出したいときは、まず「@が何文字目にあるか」を考えると分かりやすいです。
メールアドレスからユーザー名を抽出する基本式
先に結論から見ると、セルA3にメールアドレスが入っている場合、ユーザー名を抽出する基本式は次のとおりです。
=LEFT(A3,FIND("@",A3)-1)
この式を使うと、たとえばA3に ichiro_sato@gmail.com と入力されている場合、結果として ichiro_sato が表示されます。
| セルA3の値 | 数式 | 抽出結果 |
|---|---|---|
| ichiro_sato@gmail.com | =LEFT(A3,FIND("@",A3)-1) | ichiro_sato |
| hanako.office@example.co.jp | =LEFT(A3,FIND("@",A3)-1) | hanako.office |
| sales001@company.jp | =LEFT(A3,FIND("@",A3)-1) | sales001 |
ポイントは、FIND関数で「@」の位置を調べ、LEFT関数でその手前までを取り出すことです。
FIND関数で「@」の位置を調べる
まずは、メールアドレスの中で「@」が何文字目にあるのかを調べます。ここで使うのがFIND関数です。


FIND関数の基本形
=FIND(検索文字列,対象文字列)
セルA3に ichiro_sato@gmail.com と入力されている場合、「@」の位置を調べる式は次のとおりです。
=FIND("@",A3)
この式は、A3の中で「@」が左から何文字目にあるかを数値で返します。
| セルA3の値 | 数式 | 結果 |
|---|---|---|
| ichiro_sato@gmail.com | =FIND("@",A3) | 12 |
結果が「12」であれば、「@」は12文字目にあるという意味です。
メールアドレスからユーザー名を取り出すには、「@」そのものは不要です。そのため、あとで -1 をして、「@」の1つ前までを取り出します。



数式の中で使う「@」は半角です。全角の「@」を入れると、思った結果にならないことがあります。
LEFT関数で「@の前だけ」を取り出す
次に、LEFT関数を使って、文字列の左端から指定した文字数だけを取り出します。
LEFT関数の基本形
=LEFT(文字列,文字数)
セルA3の左端から「@」の1つ前までを取り出すには、FIND関数とLEFT関数を組み合わせます。
=LEFT(A3,FIND("@",A3)-1)
この式の考え方は次のとおりです。
FIND("@",A3)で「@」の位置を調べる-1で「@」そのものを除外するLEFT(A3,文字数)で左端から必要な文字だけ取り出す
たとえば、ichiro_sato@gmail.com の「@」は12文字目です。ユーザー名として必要なのは「@」の前までなので、12から1を引いた11文字分をLEFT関数で取り出します。
その結果、ichiro_sato だけを抽出できます。
Microsoft 365やExcel 2024ならTEXTBEFORE関数が簡単
Microsoft 365やExcel 2024を使っている場合は、TEXTBEFORE関数を使うと、より短い式でユーザー名を抽出できます。
TEXTBEFORE関数は、指定した文字列より前にある文字を返す関数です。
=TEXTBEFORE(A3,"@")
セルA3に ichiro_sato@gmail.com と入力されている場合、この式だけで ichiro_sato を抽出できます。
| 方法 | 数式 | 特徴 |
|---|---|---|
| FIND+LEFT | =LEFT(A3,FIND("@",A3)-1) | 古いExcelでも使いやすい |
| TEXTBEFORE | =TEXTBEFORE(A3,"@") | 式が短く分かりやすい |
新しいExcelを使っているならTEXTBEFORE関数が便利です。一方で、Excel 2019やExcel 2021など、環境によってはTEXTBEFORE関数が使えない場合があります。
複数のパソコンで同じファイルを開く場合や、職場でExcelのバージョンが混在している場合は、FIND関数とLEFT関数を組み合わせる方法を覚えておくと安心です。



新しいExcelならTEXTBEFORE、古いExcelも考えるならFIND+LEFT、と覚えると使い分けやすいです。
複数のメールアドレスから一括でユーザー名を抽出する
メールアドレスが1件だけなら手入力でも対応できますが、顧客リストや社員一覧では何十件、何百件と並んでいることがあります。
その場合は、最初のセルに数式を入力したあと、下方向へコピーすれば一括で抽出できます。
一括抽出の手順
- A列にメールアドレスを入力する
- B列の先頭セルに抽出用の数式を入力する
- 入力した数式を下方向へコピーする
- 必要に応じて、結果を値として貼り付ける
たとえば、A3からA10までメールアドレスが入力されている場合、B3に次の式を入力します。
=LEFT(A3,FIND("@",A3)-1)
その後、B3の数式をB10までコピーすれば、各メールアドレスからユーザー名だけを抽出できます。
元データを直接加工するのではなく、隣の列に抽出結果を出すようにすると、元のメールアドレスを残したまま安全に作業できます。
抽出結果を「値」として残す方法
関数で抽出した結果は、元のメールアドレスを参照しています。そのため、元データを削除したり移動したりすると、抽出結果も変わる場合があります。
抽出したユーザー名だけを固定して残したい場合は、コピー後に「値」として貼り付けます。
- 抽出結果のセル範囲を選択する
- コピーする
- 貼り付け先を選択する
- 右クリックして「値の貼り付け」を選ぶ
これで、数式ではなく文字列としてユーザー名を残せます。



抽出後に別の資料へ貼り付けるなら、最後に「値の貼り付け」をしておくと、参照エラーを防ぎやすくなります。
メールアドレスの整理や顧客リストの加工は、Excel関数を覚えると作業時間を大きく減らせます。
特に、FIND関数、LEFT関数、MID関数、TEXTBEFORE関数のような文字列操作は、名簿管理、会員データ整理、社内資料の作成などでよく使います。
「関数をその場しのぎで調べるだけでなく、Excelの基本からまとめて覚えたい」という場合は、オンライン講座で体系的に学ぶ方法もあります。
応用:ドメイン名を抽出する方法
メールアドレスからユーザー名ではなく、「@」以降のドメイン名を取り出したい場合もあります。
たとえば、ichiro_sato@gmail.com から gmail.com だけを抽出したいケースです。
MID関数でドメイン名を取り出す
古いExcelでも使いやすい方法は、FIND関数とMID関数を組み合わせる方法です。
=MID(A3,FIND("@",A3)+1,LEN(A3))
この式では、「@」の直後から文字列の最後までを取り出します。
FIND("@",A3)で「@」の位置を調べる+1で「@」の次の文字から開始するLEN(A3)で文字列の長さを指定する
結果として、ichiro_sato@gmail.com から gmail.com を抽出できます。
TEXTAFTER関数でドメイン名を取り出す
Microsoft 365やExcel 2024を使っている場合は、TEXTAFTER関数でもドメイン名を抽出できます。
=TEXTAFTER(A3,"@")
TEXTAFTER関数は、指定した文字列より後ろにある文字を返します。ユーザー名を抽出するTEXTBEFORE関数とセットで覚えると、メールアドレスの分割作業がかなり楽になります。
| 目的 | 新しいExcel | 古いExcelでも使いやすい式 |
|---|---|---|
| @の前を抽出 | =TEXTBEFORE(A3,"@") | =LEFT(A3,FIND("@",A3)-1) |
| @の後ろを抽出 | =TEXTAFTER(A3,"@") | =MID(A3,FIND("@",A3)+1,LEN(A3)) |
メールアドレスをユーザー名とドメインに分けると、どのメールサービスを使っている人が多いか、社内メールと外部メールが混在していないか、といった確認にも使えます。
よくあるエラーと対処法
メールアドレスの抽出でうまくいかない場合は、数式そのものよりも、元データの状態やExcelのバージョンが原因になっていることがあります。
「#VALUE!」が表示される場合
FIND関数を使った式で「#VALUE!」が表示される場合は、対象のセルに「@」が含まれていない可能性があります。
たとえば、A3が空白だったり、メールアドレスではない文字列が入っていたりすると、「@」を見つけられずエラーになります。
エラーを避けたい場合は、IFERROR関数を組み合わせます。
=IFERROR(LEFT(A3,FIND("@",A3)-1),"@なし")
この式では、ユーザー名を抽出できる場合は通常どおり表示し、抽出できない場合は「@なし」と表示します。
空白が混ざっている場合
Webサイトや別システムからコピーしたデータには、前後に余分な空白が含まれていることがあります。
見た目では分かりにくくても、余分な空白があると、抽出後の文字列に空白が残ることがあります。
前後の余分な空白を取り除いてから処理したい場合は、TRIM関数を組み合わせます。
=LEFT(TRIM(A3),FIND("@",TRIM(A3))-1)
TRIM関数を使うことで、セル内の前後にある不要な空白を取り除いたうえで、ユーザー名を抽出できます。
TEXTBEFORE関数が使えない場合
=TEXTBEFORE(A3,"@") と入力してもエラーになる場合は、使っているExcelがTEXTBEFORE関数に対応していない可能性があります。
その場合は、TEXTBEFORE関数ではなく、次のFIND関数とLEFT関数の組み合わせを使います。
=LEFT(A3,FIND("@",A3)-1)
職場や学校などで複数のExcel環境を使う場合は、古いExcelでも使いやすいFIND+LEFTの式を使っておくと、ファイルを共有したときのトラブルを減らせます。



自分のExcelではTEXTBEFOREが使えても、共有先のExcelでは使えないことがあります。共有前提ならFIND+LEFTが無難です。
メールアドレス抽出で使う関数まとめ
最後に、メールアドレスからユーザー名やドメイン名を取り出すときに使う関数を整理します。
| 目的 | 使用する関数 | 式の例 | 向いている環境 |
|---|---|---|---|
| ユーザー名を抽出 | FIND+LEFT | =LEFT(A3,FIND("@",A3)-1) | 幅広いExcel |
| ユーザー名を簡単に抽出 | TEXTBEFORE | =TEXTBEFORE(A3,"@") | Microsoft 365、Excel 2024など |
| ドメイン名を抽出 | FIND+MID+LEN | =MID(A3,FIND("@",A3)+1,LEN(A3)) | 幅広いExcel |
| ドメイン名を簡単に抽出 | TEXTAFTER | =TEXTAFTER(A3,"@") | Microsoft 365、Excel 2024など |
| エラーを避ける | IFERROR+LEFT | =IFERROR(LEFT(A3,FIND("@",A3)-1),"@なし") | 入力ミスが混ざるリスト |
| 空白を取り除いて抽出 | TRIM+FIND+LEFT | =LEFT(TRIM(A3),FIND("@",TRIM(A3))-1) | コピペしたデータ |
まとめ
Excelでメールアドレスからユーザー名を抽出するなら、基本はFIND関数とLEFT関数を組み合わせます。
=LEFT(A3,FIND("@",A3)-1)
この式では、FIND関数で「@」の位置を調べ、LEFT関数で「@」の前までの文字列を取り出します。
Microsoft 365やExcel 2024を使っている場合は、TEXTBEFORE関数を使うと、さらに短い式で同じ処理ができます。
=TEXTBEFORE(A3,"@")
また、ドメイン名を取り出したい場合は、FIND+MID+LEN、またはTEXTAFTER関数を使います。
顧客リスト、会員データ、社内アカウント一覧など、メールアドレスを大量に扱う場面では、関数で一括処理できると作業時間を大きく短縮できます。古いExcelも考えるならFIND+LEFT、新しいExcelだけで使うならTEXTBEFORE、と使い分けると実務でも扱いやすくなります。


コメント