TEXTBEFORE関数の使い方|特定の文字より前の文字列を抽出する方法

スポンサーリンク

「メールアドレスから@より前のユーザー名だけ取り出したい」「フルネームから名字だけ抽出したい」――こんな場面で活躍するのが TEXTBEFORE関数 です。

LEFT関数やFIND関数を組み合わせれば同じことはできますが、TEXTBEFORE関数ならシンプルな1行の数式で完結します。Excel 2021・Microsoft 365から使えるようになった文字列操作の新関数です。

この記事では基本的な使い方から、インスタンス指定・エラー対処、TEXTAFTER・TEXTSPLITとの使い分けまで解説します。


TEXTBEFORE関数とは?

読み方と語源

「テキスト ビフォア」と読みます。TEXT(テキスト)+ BEFORE(〜より前)が語源で、「指定した文字よりも前の部分を抽出する」関数です。

できること

指定した 区切り文字(デリミタ)より前 の文字列を返します。

  • メールアドレスの「@」より前のユーザー名を取り出す
  • 「苗字 名前」の苗字だけを抽出する
  • パスを区切りに使って特定の部分だけ取り出す
  • 複数出現する区切り文字の「N番目」より前を指定できる

対応バージョン:Excel 2021・Microsoft 365(Excel 2019以前では使用不可)


TEXTBEFORE関数の書き方

基本構文

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

引数の説明

引数必須/任意説明
文字列必須抽出対象の文字列またはセル参照を指定します
区切り記号必須この文字より「前」を抽出する目印となる文字を指定します
インスタンス任意区切り記号が複数ある場合に何番目を基準にするか指定します(省略時は1番目)
一致モード任意大文字・小文字を区別するか指定します(0=区別する/1=区別しない)
検索方法任意区切り記号が見つからない場合に文字列全体を返すか指定します(0=全体を返す/1=エラーを返す)
見つからない場合任意区切り記号が見つからない場合に表示する値を指定します(省略時は #N/A

基本的な使い方

例1:メールアドレスからユーザー名を抽出する

A1セルに user@example.com が入っている場合:

=TEXTBEFORE(A1, "@")

結果:user

「@」より前の文字列だけが取り出せます。

例2:フルネームから名字を抽出する

A1セルに 田中 太郎 が入っている場合(スペース区切り):

=TEXTBEFORE(A1, " ")

結果:田中

スペースより前の「田中」だけが返されます。

例3:複数の区切り文字がある場合(インスタンス指定)

A1セルに 田中,太郎,male,22 が入っている場合:

=TEXTBEFORE(A1, ",")      → 「田中」(1番目のカンマより前)
=TEXTBEFORE(A1, ",", 2)   → 「田中,太郎」(2番目のカンマより前)
=TEXTBEFORE(A1, ",", 3)   → 「田中,太郎,male」(3番目のカンマより前)

インスタンスに 負の値 を指定すると、末尾から数えた番目になります。

=TEXTBEFORE(A1, ",", -1)  → 「田中,太郎,male」(末尾から1番目のカンマより前)

エラー処理と「見つからない場合」引数

区切り記号が文字列の中に存在しない場合、デフォルトでは #N/A エラーが返されます。

見つからない場合に別の値を返す

=TEXTBEFORE(A1, "@", 1, 0, 0, "該当なし")

「@」が含まれないセルには「該当なし」が表示されます。データの中に対象外の行が混じっている場合に役立ちます。

見つからない場合に元の文字列を返す(検索方法=0)

=TEXTBEFORE(A1, "@", 1, 0, 0)

第5引数(検索方法)を 0 にすると、区切り記号が見つからない場合でも元の文字列全体が返されます。#N/A エラーで処理が止まるのを防ぎたいときに使えます。


大文字・小文字を区別しない検索

=TEXTBEFORE("Hello World", "world", 1, 1)

一致モードを 1 にすると、「World」と「world」を同一視します。大文字小文字が混在するデータでも安定して動作します。


実務での活用例

活用例1:URLからドメインを除いたパスを取得する

URLの https:// より後ろを取る場合はTEXTAFTERを使いますが、特定パスより前を取りたい場合はTEXTBEFOREが便利です。

=TEXTBEFORE("https://example.com/category/page", "/category")
→ "https://example.com"

活用例2:商品コードから種別を抽出する

商品コード ABC-001-JP の種別部分(ABC)だけを取り出す場合:

=TEXTBEFORE(A1, "-")
→ "ABC"

活用例3:ファイルパスからフォルダ名を抽出する

C:UserstanakaDocumentsreport.xlsx からファイル名前の部分まで取り出す:

=TEXTBEFORE(A1, "", -1)
→ "C:UserstanakaDocuments"

インスタンスに -1 を指定することで、最後の より前が返されます。


TEXTAFTER・TEXTSPLITとの使い分け

TEXTBEFORE関数と一緒に知っておきたい関数との比較です。

関数抽出方向使いどころ
TEXTBEFORE区切り文字より前ユーザー名・名字・先頭部分を取り出したい
TEXTAFTER区切り文字より後ろドメイン・名前・末尾部分を取り出したい
TEXTSPLIT全体を複数セルに展開分割した全要素を配列として使いたい

同じ文字列に両方使う例(A1 = user@example.com):

=TEXTBEFORE(A1, "@")   → "user"(@より前)
=TEXTAFTER(A1, "@")    → "example.com"(@より後)

よくあるエラーと対処法

エラー原因対処法
#N/A区切り記号が文字列内に存在しない第6引数に代替値を指定するか、第5引数を 0 にする
#VALUE!インスタンスに0を指定しているインスタンスは1以上または負の整数のみ有効
#VALUE!文字列引数が空の配列になっているセル参照の範囲を確認する

まとめ

TEXTBEFORE関数のポイントをまとめます。

  • 指定した区切り記号より「前」の文字列を1つの数式で取り出せる
  • インスタンス引数で「N番目の区切り文字より前」を柔軟に指定できる
  • 区切り記号が見つからない場合のエラー処理も引数で制御できる
  • TEXTAFTER・TEXTSPLITとセットで覚えると文字列操作の幅が大きく広がる

LEFT・FIND関数の組み合わせで書いていた数式を、TEXTBEFORE一本でシンプルに書き直してみてください。


関連記事

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