Textbefore関数の基本的な使い方と構造
まずは、Textbefore関数の基本的な使い方と、その構造を見ていきましょう。
Textbefore関数の構文(書き方)
Textbefore関数は、2021年以降のMicrosoft 365(サブスクリプション版)またはExcel 2021でのみ利用可能です。
Textbefore関数の構文:
=TEXTBEFORE(文字列, 区切り文字, [出現回数], [一致モード], [末尾一致], [見つからない場合の値])
文字列(必須) :処理の対象となる文字列(セル)
区切り文字(必須) :どこまでを取り出すかの目印となる文字
出現回数(任意):区切り文字が何回目に出現したところで区切るか
一致モード(任意):区切り文字の大文字・小文字を区別するか
末尾一致(任意):文字列の末尾に区切り文字がある場合の扱い
見つからない場合の値(任意):区切り文字が見つからなかった場合に返す値
この中で、まず覚えるべきは最初の2つの引数(文字列と区切り文字)です。
これだけで大抵の作業はこなせますよ!
例題:最もシンプルなデータ抽出
まずは、最もシンプルな例で使い方を確認しましょう。
【例題データ】

【目的】
区切り文字であるハイフン – の前にある果物の名前(「りんご」「バナナ」「みかん」)を抽出したい。
【入力する数式】
セル B2 に以下の数式を入力します。
=TEXTBEFORE(A2, “-“)
【結果】

- 文字列として A2 を指定。
- 区切り文字として “-“ を指定。(文字列なので必ずダブルクォーテーションで囲みます)
- A2 の「りんご-赤」から、最初の – より前の「りんご」が抽出されました。
Textbefore関数の応用:複数回出現する区切り文字への対応
実務では、一つの文字列の中に区切り文字が複数回出現することがよくありますよね。そのときに活躍するのが、3つ目の引数【出現回数】です。
例題:2回目、または最後の区切り文字で区切る
【例題データ】

【目的】
- 2回目の – より前の文字列(例:「東京都-千代田区」)を抽出したい。(B列)
- 最後の – より前の文字列(例:「東京都-千代田区-」)を抽出したい。(C列)
【入力する数式】
2回目の区切り文字まで(B列)
=TEXTBEFORE(A2, “-“, 2)
最後の区切り文字まで(C列)
=TEXTBEFORE(A2, “-“, -1)
【結果】

- Instance_num に 正の数 (1, 2, 3…) を指定すると、先頭から数えてその回数目の区切り文字で区切ります。
- Instance_num に 負の数 (-1, -2, -3…) を指定すると、末尾から数えてその回数目の区切り文字で区切ります。-1 は「最後の区切り文字」を意味するため、非常に便利です。
Textbefore関数が使えない場合の代替関数
もしあなたが使用しているエクセルがTextbefore関数に対応していない場合は既存の関数を組み合わせることで同じ処理を実現できます。
主な代替関数は、FIND関数とLEFT関数を組み合わせる方法です。
例題:LEFT関数とFIND関数でTextbeforeを代用
【例題データ】

【目的】
最初の – より前の文字列(「M」「L」)を抽出したい。
【入力する数式】
セル B2 に以下の数式を入力します。
=LEFT(A2, FIND(“-“, A2) – 1)
【結果】

- FIND(“-“, A2):文字列 A2 の中で、区切り文字であるハイフン – が何文字目にあるかを調べます。(例: A2 では 2番目)
- FIND(…) – 1:ハイフンの位置から 1 を引くことで、抽出したい文字数(ハイフンの直前まで)を求めます。(例: 2 – 1 = 1 文字)
- LEFT(A2, …):文字列 A2 の左側から、求めた文字数分だけ抽出します。

FIND関数は最初の区切り文字の位置しか返せないため、この代用方法では、Textbefore関数の出現回数を指定するような複雑な処理はできないことに注意してください。
Textbefore関数を使う上での注意点
Textbefore関数はとても便利ですが、実務で使う上で知っておきたい注意点がいくつかあります。
Textbefore関数は「空白」や「0」を除外しない
Textbefore関数は、基本的に抽出された文字列をそのまま返します。そのため、もし元の文字列に空白(スペース)や数字の 0が含まれていても、そのまま結果として表示されます。
【例題データ】

【入力する数式】
=TEXTBEFORE(A2, “-“)
【結果】

セル B2 の結果には、目に見えない空白が先頭に含まれている可能性があります。
もし、抽出した結果の前後の空白を除去したい場合は、Textbefore関数全体をTRIM関数で囲んであげましょう。
=TRIM(TEXTBEFORE(A2, “-“))
TextbeforeとTextafter関数の違い
Textbefore関数と Textafter関数は、機能が対になっています。
| 関数名 | 処理内容 | 抽出される部分 |
|---|---|---|
| Textbefore | 区切り文字の前の文字列を抽出 | りんご-赤 → りんご |
| Textafter | 区切り文字の後の文字列を抽出 | りんご-赤 → 赤 |

どちらも構文(引数)は全く同じなので、一度覚えれば両方使えるようになりますよ!
Textbefore関数が使えない環境と対処法
繰り返しになりますが、Textbefore関数は比較的新しい関数です。
- 使える環境: Microsoft 365(サブスクリプション版)、Excel 2021
- 使えない環境: Excel 2019以前のバージョン
もし職場や学校でExcel 2019以前を使っている場合は、残念ながらTextbefore関数は使えません。
この場合は、「3. Textbefore関数が使えない場合の代替関数」で説明した、LEFT関数とFIND関数を組み合わせる方法で対応しましょう。
まとめ:Textbefore関数でデータ抽出を効率化!
今回は、エクセルのTextbefore関数について、基本的な使い方から、応用編、使えない場合の代替手段を解説しました!
Textbefore関数は、特に定型的な文字列データから一部を抜き出す作業において、これまでの関数(LEFT、FINDなど)を組み合わせるよりも圧倒的にシンプルで分かりやすい数式で処理できます。
コメント