「メールアドレスから@より後ろのドメインだけ取り出したい」「ファイルパスからファイル名だけ抽出したい」――こんな文字列操作を一行の数式で解決してくれるのが TEXTAFTER関数 です。
RIGHT関数やFIND関数を組み合わせた複雑な数式が不要になり、シンプルに書けます。TEXTBEFORE関数と対になる関数で、Excel 2021・Microsoft 365から使えます。
この記事では基本的な使い方から、インスタンス指定・エラー対処、TEXTBEFORE・TEXTSPLITとの使い分けまで解説します。
TEXTAFTER関数とは?
読み方と語源
「テキスト アフター」と読みます。TEXT(テキスト)+ AFTER(〜より後)が語源で、「指定した文字よりも後ろの部分を抽出する」関数です。
できること
指定した 区切り文字(デリミタ)より後ろ の文字列を返します。
- メールアドレスの「@」より後ろのドメインを取り出す
- ファイルパスの最後の「」より後ろのファイル名を取り出す
- 「苗字 名前」の名前だけを抽出する
- 複数出現する区切り文字の「N番目」より後ろを指定できる
対応バージョン:Excel 2021・Microsoft 365(Excel 2019以前では使用不可)
TEXTAFTER関数の書き方
基本構文
=TEXTAFTER( 文字列, 区切り記号, [インスタンス], [一致モード], [検索方法], [見つからない場合] )
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 文字列 | 必須 | 抽出対象の文字列またはセル参照を指定します |
| 区切り記号 | 必須 | この文字より「後ろ」を抽出する目印となる文字を指定します |
| インスタンス | 任意 | 区切り記号が複数ある場合に何番目を基準にするか指定します(省略時は1番目) |
| 一致モード | 任意 | 大文字・小文字を区別するか指定します(0=区別する/1=区別しない) |
| 検索方法 | 任意 | 区切り記号が見つからない場合に文字列全体を返すか指定します(0=全体を返す/1=エラーを返す) |
| 見つからない場合 | 任意 | 区切り記号が見つからない場合に表示する値を指定します(省略時は #N/A) |
基本的な使い方
例1:メールアドレスからドメインを抽出する
A1セルに user@example.com が入っている場合:
=TEXTAFTER(A1, "@")
結果:example.com
「@」より後ろの文字列だけが取り出せます。
例2:フルネームから名前を抽出する
A1セルに 田中 太郎 が入っている場合(スペース区切り):
=TEXTAFTER(A1, " ")
結果:太郎
スペースより後ろの「太郎」だけが返されます。
例3:複数の区切り文字がある場合(インスタンス指定)
A1セルに 田中,太郎,male,22 が入っている場合:
=TEXTAFTER(A1, ",") → 「太郎,male,22」(1番目のカンマより後ろ)
=TEXTAFTER(A1, ",", 2) → 「male,22」(2番目のカンマより後ろ)
=TEXTAFTER(A1, ",", 3) → 「22」(3番目のカンマより後ろ)
インスタンスに 負の値 を指定すると、末尾から数えた番目になります。
=TEXTAFTER(A1, ",", -1) → 「22」(末尾から1番目のカンマより後ろ)
エラー処理と「見つからない場合」引数
区切り記号が文字列の中に存在しない場合、デフォルトでは #N/A エラーが返されます。
見つからない場合に別の値を返す
=TEXTAFTER(A1, "@", 1, 0, 0, "該当なし")
「@」が含まれないセルには「該当なし」が表示されます。データに対象外の行が混じっている場合に役立ちます。
見つからない場合に元の文字列を返す(検索方法=0)
=TEXTAFTER(A1, "@", 1, 0, 0)
第5引数(検索方法)を 0 にすると、区切り記号が見つからない場合でも元の文字列全体が返されます。
大文字・小文字を区別しない検索
=TEXTAFTER("Hello World", "hello", 1, 1)
一致モードを 1 にすると、「Hello」と「hello」を同一視します。
実務での活用例
活用例1:メールアドレスのドメインを一括取得する
顧客リストにメールアドレスが入っている場合、ドメインだけ取り出してグループ分けできます。
=TEXTAFTER(A2, "@")
これを一列に入力するだけで、全行のドメインが一括で取得できます。
活用例2:ファイルパスからファイル名を取り出す
C:UserstanakaDocumentsreport.xlsx からファイル名だけ取り出す:
=TEXTAFTER(A1, "", -1)
→ "report.xlsx"
インスタンスに -1 を指定することで、最後の より後ろが返されます。
活用例3:URLからパスを取得する
https://example.com/category/page からドメイン以降のパスを取り出す:
=TEXTAFTER(A1, "example.com")
→ "/category/page"
TEXTBEFORE・TEXTSPLITとの使い分け
| 関数 | 抽出方向 | 使いどころ |
|---|---|---|
| TEXTBEFORE | 区切り文字より前 | ユーザー名・名字・先頭部分を取り出したい |
| TEXTAFTER | 区切り文字より後ろ | ドメイン・名前・末尾部分を取り出したい |
| TEXTSPLIT | 全体を複数セルに展開 | 分割した全要素を配列として使いたい |
同じ文字列に両方使う例(A1 = user@example.com):
=TEXTBEFORE(A1, "@") → "user"(@より前)
=TEXTAFTER(A1, "@") → "example.com"(@より後)
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
#N/A | 区切り記号が文字列内に存在しない | 第6引数に代替値を指定するか、第5引数を 0 にする |
#VALUE! | インスタンスに0を指定している | インスタンスは1以上または負の整数のみ有効 |
#VALUE! | 文字列引数が空の配列になっている | セル参照の範囲を確認する |
まとめ
TEXTAFTER関数のポイントをまとめます。
- 指定した区切り記号より「後ろ」の文字列を1つの数式で取り出せる
- インスタンス引数で「N番目の区切り文字より後ろ」を柔軟に指定できる
- 区切り記号が見つからない場合のエラー処理も引数で制御できる
- TEXTBEFORE・TEXTSPLITとセットで覚えると文字列操作の幅が大きく広がる
RIGHT・FIND関数の組み合わせで書いていた数式を、TEXTAFTER一本でシンプルに書き直してみてください。
