【Excel】メールアドレスからユーザー名を抽出する方法|FIND・LEFT関数とTEXTBEFOREの使い方

当ページのリンクには広告が含まれています。
メールアドレスからユーザー名(@前)だけを抽出

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件だけなら手入力でも対応できますが、顧客リストや社員一覧では何十件、何百件と並んでいることがあります。

その場合は、最初のセルに数式を入力したあと、下方向へコピーすれば一括で抽出できます。

一括抽出の手順

  1. A列にメールアドレスを入力する
  2. B列の先頭セルに抽出用の数式を入力する
  3. 入力した数式を下方向へコピーする
  4. 必要に応じて、結果を値として貼り付ける

たとえば、A3からA10までメールアドレスが入力されている場合、B3に次の式を入力します。

=LEFT(A3,FIND("@",A3)-1)

その後、B3の数式をB10までコピーすれば、各メールアドレスからユーザー名だけを抽出できます。

元データを直接加工するのではなく、隣の列に抽出結果を出すようにすると、元のメールアドレスを残したまま安全に作業できます。

抽出結果を「値」として残す方法

関数で抽出した結果は、元のメールアドレスを参照しています。そのため、元データを削除したり移動したりすると、抽出結果も変わる場合があります。

抽出したユーザー名だけを固定して残したい場合は、コピー後に「値」として貼り付けます。

  1. 抽出結果のセル範囲を選択する
  2. コピーする
  3. 貼り付け先を選択する
  4. 右クリックして「値の貼り付け」を選ぶ

これで、数式ではなく文字列としてユーザー名を残せます。

チエバコ

抽出後に別の資料へ貼り付けるなら、最後に「値の貼り付け」をしておくと、参照エラーを防ぎやすくなります。

メールアドレスの整理や顧客リストの加工は、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、と使い分けると実務でも扱いやすくなります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次