ExcelのTEXTAFTER関数の使い方|特定の文字より後ろの文字列を抽出する

スポンサーリンク

「メールアドレスから@より後ろのドメインだけ取り出したい」「ファイルパスからファイル名だけ抜き出したい」――。こんな文字列操作で時間を取られていませんか。

従来はRIGHT関数とFIND関数とLEN関数を組み合わせた長い数式が必要でした。読みづらく、後から見返したときに修正に手間がかかる数式です。

そんな手間を一気に解消してくれるのが TEXTAFTER関数(テキストアフター関数) です。区切り文字より後ろの文字列を、たった一行の数式で取り出せます。

この記事ではTEXTAFTER関数の使い方を網羅的に解説します。書式・基本例・複数区切り・後ろから数えた抽出・TEXTBEFOREとの使い分け・エラー対処・FAQまでカバーしています。Excel 2021とMicrosoft 365で使える便利な新関数を、明日から実務で活かしてください。

  1. TEXTAFTER関数とは?読み方と何ができるか
    1. 読み方と語源
    2. TEXTAFTER関数でできること
    3. 対応バージョンと注意点
  2. TEXTAFTER関数の書式と引数
    1. 基本構文
    2. 引数一覧表
    3. 引数を使い分ける目安
  3. TEXTAFTER関数の基本的な使い方
    1. 例1:メールアドレスからドメインを取り出す
    2. 例2:氏名から「名前」だけを抽出する
    3. 例3:商品コードからサイズだけ取り出す
    4. 例4:従来の数式との比較
  4. TEXTAFTER関数の使い方|複数の区切り文字を指定する
    1. インスタンス引数の基本
    2. TEXTBEFOREと組み合わせて中間項目を切り出す
    3. CSVデータからN番目の項目を抜き出す関数のひな型
  5. TEXTAFTER関数の使い方|後ろから数えた位置で抽出する
    1. 負のインスタンスの基本
    2. ファイルパスからファイル名だけ取り出す
    3. URLから末尾のスラッグを取り出す
    4. 拡張子だけを取り出す
  6. TEXTAFTER関数とTEXTBEFORE・TEXTSPLITとの使い分け
    1. 3つの関数の役割比較
    2. TEXTBEFORE と TEXTAFTER の対比
    3. TEXTSPLIT が向くケース
    4. 使い分けの判断フロー
  7. TEXTAFTER関数でよくあるエラーと対処法
    1. エラー一覧
    2. #N/A エラー:区切り記号が見つからない
    3. #VALUE! エラー:インスタンスが不正
    4. #NAME? エラー:バージョン非対応
    5. #SPILL! エラー:配列入力の競合
  8. TEXTAFTER関数のよくある質問(FAQ)
    1. Q1. TEXTAFTER関数はどのバージョンのExcelから使えますか
    2. Q2. 区切り文字に複数の候補を指定できますか
    3. Q3. 大文字と小文字を区別したくないときはどうすればいいですか
    4. Q4. 区切り文字自体も含めて取り出したい場合はどうしますか
    5. Q5. RIGHT関数とTEXTAFTER関数はどう使い分けますか
    6. Q6. 区切り記号が見つからないときに元の文字列を返したい
    7. Q7. TEXTAFTER関数を使うと数式が遅くなりますか
  9. まとめ
    1. 関連記事

TEXTAFTER関数とは?読み方と何ができるか

まずはTEXTAFTER関数の正体を整理しておきます。読み方・語源・対応バージョン・できることを順に確認しましょう。

読み方と語源

TEXTAFTERは「テキスト アフター」と読みます。TEXT(テキスト)+ AFTER(〜より後)が語源です。

つまり「指定した文字よりも後ろの部分を抽出するテキスト関数」というのが、関数名そのものに表れています。対になる関数として、前の部分を取り出すTEXTBEFORE関数(テキストビフォア)が用意されています。

TEXTAFTER関数でできること

TEXTAFTER関数は、文字列の中から指定した 区切り文字(デリミタ)より後ろ の部分を抽出します。

具体的には次のような処理を1つの数式で実現できます。

  • メールアドレスの「@」より後ろのドメインを取り出す
  • ファイルパスの最後の「」より後ろのファイル名を取り出す
  • 「苗字 名前」形式から名前だけを抽出する
  • カンマ区切りデータから特定の項目だけを切り出す
  • URLから特定のディレクトリ以降を取得する

しかも区切り文字が複数ある場合に「何番目を基準にするか」も指定できます。負の値を使えば末尾から数えることも可能です。

対応バージョンと注意点

TEXTAFTER関数は新しい関数です。対応バージョンを必ず事前に確認してください。

バージョンTEXTAFTER関数の利用可否
Microsoft 365使える
Excel 2021使える
Excel 2019使えない
Excel 2016 / 2013使えない

Excel 2019以前ではTEXTAFTER関数を使えません。共有先の環境がExcel 2019以前の場合は、FIND関数RIGHT関数を組み合わせる従来の方法で書く必要があります。

TEXTAFTER関数の書式と引数

TEXTAFTER関数は引数が多めです。とはいえ実務で使うのは最初の2〜3個がほとんどです。まずは全体像を掴みましょう。

基本構文

=TEXTAFTER(文字列, 区切り記号, [インスタンス], [一致モード], [検索方法], [見つからない場合])

必須引数は 文字列区切り記号 の2つだけです。3つ目以降は省略可能で、必要に応じて指定します。

引数一覧表

各引数の役割をまとめておきます。

引数必須/任意既定値説明
文字列必須抽出元の文字列またはセル参照を指定します
区切り記号必須この文字より「後ろ」を抽出する目印を指定します
インスタンス任意1区切り記号が複数ある場合に何番目を基準にするか指定します
一致モード任意0大文字小文字を区別するか指定します(0=区別する/1=区別しない)
検索方法任意0末尾から検索するかどうかを指定します(0=先頭から/1=末尾から)
見つからない場合任意#N/A区切り記号が見つからないときに返す値を指定します

引数を使い分ける目安

引数の選び方には次のような目安があります。

  • 1〜2個だけ使う:シンプルな抽出ならこれで足りる
  • 3個目(インスタンス)を使う:区切り記号が複数あるとき
  • 6個目(見つからない場合)を使う:エラーを別の文字に置き換えたいとき
  • 4・5個目はあまり使わない:特殊なケースで登場する程度

最初は文字列と区切り記号の2つだけ覚えれば十分です。慣れてきたらインスタンスと「見つからない場合」を追加していきましょう。

TEXTAFTER関数の基本的な使い方

ここからは実際の使用例を見ていきます。まずは最もシンプルなパターンからです。

例1:メールアドレスからドメインを取り出す

メールアドレスを「@」で分けて、後ろのドメイン部分だけ取り出してみます。

A2セルに tanaka@example.com が入っているとしましょう。

=TEXTAFTER(A2, "@")

結果は example.com です。「@」より後ろの文字列だけが抽出されます。

例2:氏名から「名前」だけを抽出する

「苗字 名前」のように半角スペース区切りの氏名から、名前だけを取り出す例です。

A2セルに 田中 太郎 が入っているとします。

=TEXTAFTER(A2, " ")

結果は 太郎 です。半角スペースより後ろの「太郎」だけが返されます。

全角スペース区切りの場合は、区切り記号も全角スペースで書きます。区切り記号は 完全一致 が原則です。

例3:商品コードからサイズだけ取り出す

商品コードのような構造化された文字列にも応用できます。

A2セルに PROD-1234-LL のような商品コードが入っているとしましょう。サイズ部分の LL だけを取り出します。

=TEXTAFTER(A2, "-", -1)

結果は LL です。インスタンス引数に -1 を指定すると「末尾から1番目のハイフン」が基準になります。

例4:従来の数式との比較

TEXTAFTER関数のありがたみは、従来の数式と比べると一目瞭然です。

'--- TEXTAFTER関数(新しい書き方) ---
=TEXTAFTER(A2, "@")

'--- 従来の書き方(RIGHT + FIND + LEN の組み合わせ) ---
=RIGHT(A2, LEN(A2) - FIND("@", A2))

どちらも結果は同じです。しかし読みやすさはTEXTAFTER関数が圧倒的です。

しかも従来の式は「@がない場合」にエラー処理を自前で書く必要がありました。TEXTAFTER関数なら引数1つでエラー処理まで指定できます。

TEXTAFTER関数の使い方|複数の区切り文字を指定する

区切り文字が複数回登場する文字列では、インスタンス引数が活躍します。CSVデータやログから特定の項目を切り出す場面で重宝します。

インスタンス引数の基本

インスタンス引数は「何番目の区切り文字を基準にするか」を整数で指定します。省略すると 1 が使われます。

A2セルに 田中,太郎,male,22 というカンマ区切りデータが入っているとしましょう。

'--- 1番目のカンマより後ろ(省略時と同じ) ---
=TEXTAFTER(A2, ",")
'--- 結果:太郎,male,22

'--- 2番目のカンマより後ろ ---
=TEXTAFTER(A2, ",", 2)
'--- 結果:male,22

'--- 3番目のカンマより後ろ ---
=TEXTAFTER(A2, ",", 3)
'--- 結果:22

インスタンスを変えるだけで、取り出す範囲がスライドしていきます。

TEXTBEFOREと組み合わせて中間項目を切り出す

「2番目と3番目のカンマの間」のように、中間の項目だけ欲しいときがあります。その場合はTEXTAFTERとTEXTBEFOREを組み合わせます。

先ほどの 田中,太郎,male,22 から male だけを取り出してみましょう。

'--- まず2番目のカンマより後ろを取り出す ---
'--- 結果:male,22
'--- そこから1番目のカンマより前を取り出す
=TEXTBEFORE(TEXTAFTER(A2, ",", 2), ",")
'--- 最終結果:male

2段階で考えるのがコツです。最初に「ここから後ろ」、次に「ここまで前」と切り出します。

これはTEXTSPLIT関数でも実現できますが、特定の1項目だけ欲しい場合はこの組み合わせのほうがシンプルです。

CSVデータからN番目の項目を抜き出す関数のひな型

汎用的なひな型として覚えておくと便利です。N番目の項目を取り出す式は次のようになります。

'--- N番目の項目を取り出す汎用パターン ---
'--- A2のカンマ区切り文字列から、3番目(指定したN番目)の項目を取り出す例
=TEXTBEFORE(TEXTAFTER("," & A2, ",", 3), ",")

文字列の先頭に "," を結合しているのがポイントです。これで「最初の項目」も同じロジックで扱えます。

ただし、項目数が多い場合はTEXTSPLIT関数で配列に展開してからINDEX関数で取り出すほうが見通しが良くなります。場面で使い分けましょう。

TEXTAFTER関数の使い方|後ろから数えた位置で抽出する

TEXTAFTER関数の隠れた便利機能が 負のインスタンス指定 です。末尾から数えた区切り文字を基準にできます。

負のインスタンスの基本

インスタンスに -1 を指定すると「末尾から1番目」、-2 なら「末尾から2番目」となります。

A2セルに 田中,太郎,male,22 が入っている例で確認しましょう。

'--- 末尾から1番目のカンマより後ろ ---
=TEXTAFTER(A2, ",", -1)
'--- 結果:22

'--- 末尾から2番目のカンマより後ろ ---
=TEXTAFTER(A2, ",", -2)
'--- 結果:male,22

'--- 末尾から3番目のカンマより後ろ ---
=TEXTAFTER(A2, ",", -3)
'--- 結果:太郎,male,22

データの構造が不規則で、項目数が一定でない場合に重宝します。

ファイルパスからファイル名だけ取り出す

最も実用的なのがファイルパスの処理です。フォルダ階層が深くても、ファイル名だけをきれいに取り出せます。

A2セルに C:UserstanakaDocumentsreport.xlsx が入っているとしましょう。

'--- 末尾の「」より後ろを取り出す ---
=TEXTAFTER(A2, "", -1)
'--- 結果:report.xlsx

フォルダの階層が3層でも10層でも、結果は常に最後のファイル名になります。階層の深さを気にしなくて済むのが大きな利点です。

URLから末尾のスラッグを取り出す

URLからページのスラッグ部分だけを抜き出すケースにも応用できます。

A2セルに https://mashukabu.com/excel-function-howto-use-textafter/ が入っている場合を考えます。末尾のスラッシュが邪魔ですね。

'--- まず末尾のスラッシュを取り除く ---
'--- その後、末尾から2番目の「/」より後ろを取り出す
=TEXTAFTER(TRIM(SUBSTITUTE(A2, "/", "/", LEN(A2)-LEN(SUBSTITUTE(A2, "/", "")))), "/", -1)

少し複雑ですが、SUBSTITUTEで前処理してからTEXTAFTERに渡すパターンを覚えておくと、不規則なURLにも対応できます。

拡張子だけを取り出す

ファイル名から拡張子だけを取り出すのもTEXTAFTERが得意です。

'--- ファイル名から拡張子を取り出す ---
=TEXTAFTER(A2, ".", -1)
'--- 例:report.xlsx → xlsx
'--- 例:archive.tar.gz → gz(複数のドットがあっても末尾のみ)

ドットが複数あるファイル名でも、末尾の拡張子だけを正しく抽出できます。

TEXTAFTER関数とTEXTBEFORE・TEXTSPLITとの使い分け

TEXTAFTER関数は、TEXTBEFORE関数・TEXTSPLIT関数とセットで覚えるのが効率的です。3つの関数の役割を整理しましょう。

3つの関数の役割比較

それぞれの関数は守備範囲が明確に分かれています。

関数抽出する範囲結果の形使いどころ
TEXTBEFORE区切り文字より前1つの値ユーザー名・苗字・先頭部分が欲しいとき
TEXTAFTER区切り文字より後1つの値ドメイン・名前・末尾部分が欲しいとき
TEXTSPLIT全体を分割複数セルに展開全項目を別々のセルに展開したいとき

「結果が1つ欲しい」のか「全部欲しい」のかで使い分けるのが基本です。

TEXTBEFORE と TEXTAFTER の対比

同じ文字列に両方を使うと、ちょうど前後で切り分けられます。

A2セルに user@example.com が入っているとします。

'--- @より前を取り出す(TEXTBEFORE) ---
=TEXTBEFORE(A2, "@")
'--- 結果:user

'--- @より後を取り出す(TEXTAFTER) ---
=TEXTAFTER(A2, "@")
'--- 結果:example.com

メールアドレスのリストから「ユーザー名」と「ドメイン」を別々の列に分けたいときによく使う組み合わせです。

TEXTSPLIT が向くケース

カンマ区切りの全項目を別々のセルに展開したいときは、TEXTSPLIT関数が圧倒的に楽です。

'--- A2 = 「田中,太郎,male,22」を4つのセルに展開 ---
=TEXTSPLIT(A2, ",")
'--- 結果:B2に「田中」、C2に「太郎」、D2に「male」、E2に「22」がスピルされる

ただし、欲しいのが「3番目の項目だけ」のように1つだけなら、TEXTAFTERとTEXTBEFOREの組み合わせのほうが行が増えなくて済みます。

使い分けの判断フロー

迷ったときは次の順で考えると決めやすいです。

  1. 全項目を別々のセルに展開したい → TEXTSPLIT
  2. 1つの値だけ欲しくて、それが前半部分 → TEXTBEFORE
  3. 1つの値だけ欲しくて、それが後半部分 → TEXTAFTER
  4. 中間の項目が欲しい → TEXTAFTER + TEXTBEFORE の組み合わせ

この4パターンを押さえておけば、文字列分割の大半に対応できます。

TEXTAFTER関数でよくあるエラーと対処法

便利な関数ですが、引数の指定ミスや想定外のデータでエラーになることもあります。代表的なエラーと対処法を押さえておきましょう。

エラー一覧

TEXTAFTER関数で発生しやすいエラーをまとめました。

エラー主な原因対処法
#N/A区切り記号が文字列内に存在しない第6引数に代替値を指定する
#VALUE!インスタンスに 0 を指定している1以上または負の整数を指定する
#VALUE!インスタンスの絶対値が区切り記号の出現数を超えているデータを見直すかインスタンスを調整する
#NAME?関数名のスペルミス、または対応していないバージョンで使用スペルとExcelのバージョンを確認する
#SPILL!スピル先のセルが空いていないスピル先のセルを空ける

#N/A エラー:区切り記号が見つからない

最もよく出会うのが #N/A エラーです。指定した区切り記号が文字列の中に存在しないと発生します。

'--- A2 に「user_example」(@が含まれない)が入っている場合 ---
=TEXTAFTER(A2, "@")
'--- 結果:#N/A エラー

対処法は2つあります。

対処法1:第6引数で代替値を指定する

=TEXTAFTER(A2, "@", , , , "該当なし")
'--- @が含まれない場合は「該当なし」が表示される

カンマの数に注意してください。第3・第4・第5引数を省略する場合でも、カンマは必要です。

対処法2:IFERROR関数で包む

=IFERROR(TEXTAFTER(A2, "@"), "該当なし")
'--- TEXTAFTERがエラーになったら「該当なし」を返す

IFERROR関数で包むほうが直感的で、他の関数でも使い回しやすい書き方です。

#VALUE! エラー:インスタンスが不正

インスタンス引数に 0 を指定するとエラーになります。インスタンスは1以上の整数か、負の整数(末尾から数える)のみ有効です。

'--- これはエラー ---
=TEXTAFTER(A2, ",", 0)
'--- 結果:#VALUE! エラー

'--- 正しくは1以上または負の整数 ---
=TEXTAFTER(A2, ",", 1)   '正常
=TEXTAFTER(A2, ",", -1)  '正常

「0番目」という概念がないことを意識しておきましょう。

#NAME? エラー:バージョン非対応

数式を入力しても #NAME? が出る場合は、Excelのバージョンが古い可能性があります。

ファイル → アカウント でバージョンを確認してください。Excel 2019以前ではTEXTAFTER関数自体が使えません。

その場合は次のような従来式に書き換える必要があります。

'--- TEXTAFTER関数の代替(Excel 2019以前向け) ---
=RIGHT(A2, LEN(A2) - FIND("@", A2))
'--- @以降を取り出す従来の書き方

#SPILL! エラー:配列入力の競合

複数セルに対してTEXTAFTERを使うとスピルが発生します。スピル先に既存データがあるとエラーになります。

=TEXTAFTER(A2:A10, "@")
'--- B2 から B10 にスピルしようとするが、B5に既存データがあると #SPILL! エラー

スピル先の範囲を空けるか、対象セルを一つずつ指定する数式に書き換えましょう。

TEXTAFTER関数のよくある質問(FAQ)

ここでは実務でよく聞かれる疑問を整理しておきます。

Q1. TEXTAFTER関数はどのバージョンのExcelから使えますか

Excel 2021とMicrosoft 365で使えます。Excel 2019以前では使えません。

社内で共有するファイルにTEXTAFTER関数を使う場合は、相手のExcelバージョンを必ず確認してください。Excel 2019で開くと数式部分が #NAME? エラーになり、値も表示されなくなります。

Q2. 区切り文字に複数の候補を指定できますか

TEXTAFTER関数の区切り記号には 配列 も指定できます。複数の候補を渡したい場合は中括弧で囲みます。

'--- カンマ・セミコロン・タブのどれかで区切る ---
=TEXTAFTER(A2, {",", ";", CHAR(9)})

文字列内で最初に見つかったいずれかの区切り記号で抽出します。データ提供元によって区切り文字がバラバラな場合に便利です。

Q3. 大文字と小文字を区別したくないときはどうすればいいですか

第4引数の一致モードに 1 を指定します。

'--- HELLO でも hello でも同じものとして扱う ---
=TEXTAFTER("Hello World", "HELLO", 1, 1)
'--- 結果: World(先頭スペースを含む)

英語のテキストやログファイルで、大文字と小文字の表記がバラバラなときに使います。

Q4. 区切り文字自体も含めて取り出したい場合はどうしますか

TEXTAFTER関数は区切り記号より後ろの部分しか返しません。区切り記号自体も含めたい場合は、抽出後に文字列を結合します。

'--- 区切り記号「@」を結果の先頭に追加する ---
="@" & TEXTAFTER(A2, "@")
'--- 結果: @example.com

ファイルパスからファイル名と拡張子だけを残し、拡張子の前のドットも残したい場合などに使います。

Q5. RIGHT関数とTEXTAFTER関数はどう使い分けますか

RIGHT関数は「文字数指定」、TEXTAFTER関数は「区切り記号指定」と覚えると分かりやすいです。

関数抽出基準使いどころ
RIGHT関数末尾からN文字取り出す文字数が決まっている
TEXTAFTER関数区切り記号より後区切り記号の位置で決まる

固定長データならRIGHT、可変長データならTEXTAFTERが第一候補になります。

Q6. 区切り記号が見つからないときに元の文字列を返したい

第6引数に文字列引数自身を指定します。

'--- 区切り記号がなければ元の文字列を返す ---
=TEXTAFTER(A2, "@", 1, 0, 0, A2)

メールアドレスのチェックで、@が含まれない不正データもそのまま表示して目視確認したい場合に使います。

Q7. TEXTAFTER関数を使うと数式が遅くなりますか

通常の使い方であれば、TEXTAFTER関数のパフォーマンスは十分に高速です。

ただし数万行に対してスピル形式で配列を渡すと、再計算が重くなる場合があります。シートの動作が遅いと感じたら、必要な範囲だけに数式を限定するか、一度コピーして「値の貼り付け」で静的データに変換しましょう。

まとめ

TEXTAFTER関数の使い方をまとめます。実務で迷ったら次のポイントを思い出してください。

  • TEXTAFTER関数は 区切り記号より後ろ の文字列を1つの数式で抽出できる
  • 必須引数は 文字列区切り記号 の2つだけ
  • インスタンス引数 で「何番目の区切り記号より後ろか」を指定できる
  • インスタンスに 負の値 を指定すると末尾から数えた位置で抽出できる
  • 区切り記号が見つからないときは 第6引数 または IFERROR関数 で代替値を指定する
  • TEXTBEFORE関数と組み合わせると 中間の項目 だけ取り出せる
  • 全項目を別セルに展開したいときはTEXTSPLIT関数のほうが向く
  • 対応バージョンは Excel 2021・Microsoft 365 のみ

メールアドレスのドメイン抽出・ファイル名の取り出し・氏名分割など、文字列処理の定番作業がTEXTAFTER関数なら一行で書けます。RIGHT関数とFIND関数を組み合わせた複雑な数式とはお別れして、シンプルで読みやすい数式に置き換えていきましょう。

関連記事

タイトルとURLをコピーしました