【Excel】TEXTBEFORE関数で区切り文字の前を抽出する!Excelの文字列分割を簡単にする新関数

【Excel】TEXTBEFORE関数で区切り文字の前を抽出する!Excelの文字列分割を簡単にする新関数
🛡️ 超解決

Excelで特定の区切り文字より前の文字列だけを抽出したい場面は多いでしょう。従来は複雑な関数を組み合わせる必要がありました。しかし、Microsoft 365の新しいTEXTBEFORE関数を使えば、この操作が驚くほど簡単になります。この記事では、TEXTBEFORE関数の基本的な使い方から応用例までを解説します。

TEXTBEFORE関数は、指定した区切り文字が登場する前に現れる文字列を抽出する関数です。これにより、従来はLEN、FIND、LEFT関数などを組み合わせていた処理を1つの関数で実現できます。データの前処理や文字列解析の効率が大幅に向上します。

【要点】TEXTBEFORE関数で区切り文字の前を抽出する

  • TEXTBEFORE関数: 指定した区切り文字より前の文字列を抽出します。
  • 引数「テキスト」: 対象の文字列を指定します。
  • 引数「区切り文字」: 抽出の基準となる区切り文字を指定します。
  • 引数「インスタンス番号」: 複数ある区切り文字のうち、何番目を基準にするか指定します。
  • 引数「一致モード」: 大文字と小文字を区別するかどうかを指定します。
  • 引数「対象モード」: 区切り文字が存在しない場合にどうするかを指定します。

ADVERTISEMENT

TEXTBEFORE関数の概要とできること

TEXTBEFORE関数は、Microsoft 365の最新バージョンで利用できる文字列操作関数です。この関数は、テキスト文字列の中から指定した区切り文字を検索し、その区切り文字が出現する「前」の部分だけを抽出します。例えば、「山田太郎 (東京)」という文字列から、「 (」を区切り文字として指定すれば、「山田太郎」だけを抽出できます。

この関数が登場する以前は、LEFT関数とFIND関数、あるいはLEN関数などを組み合わせて同様の処理を行う必要がありました。しかし、TEXTBEFORE関数を使えば、これらの複雑な数式を簡潔に記述でき、数式の可読性とメンテナンス性が向上します。データの前処理や、特定の情報だけを抜き出したい場合に非常に有効です。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

TEXTBEFORE関数の基本的な使い方

TEXTBEFORE関数の基本的な構文は以下の通りです。

TEXTBEFORE(テキスト, 区切り文字, [インスタンス番号], [一致モード], [対象モード])

各引数の意味は以下の通りです。

  • テキスト: 文字列を抽出したい元のテキストを指定します。セル参照または直接文字列を指定できます。
  • 区切り文字: 抽出の基準となる文字または文字列を指定します。
  • インスタンス番号 (省略可): 省略すると最初の区切り文字が対象になります。数値を指定すると、左から数えて指定した番号の区切り文字を基準にします。負の数を指定すると、右から数えて指定した番号の区切り文字を基準にします。
  • 一致モード (省略可): 0または省略すると大文字と小文字を区別します。1を指定すると区別しません。
  • 対象モード (省略可): 0または省略すると、区切り文字が存在しない場合は#N/Aエラーを返します。1を指定すると、区切り文字が存在しない場合は元のテキストを返します。

TEXTBEFORE関数を使った具体的な操作手順

ここでは、具体的な例を用いてTEXTBEFORE関数の使い方を解説します。

  1. 抽出したい文字列が入力されたセルを用意する
    例えば、A1セルに「商品コード:ABC-12345」と入力されているとします。
  2. TEXTBEFORE関数を入力するセルを選択する
    結果を表示したいセル(例: B1セル)を選択します。
  3. 関数を入力する
    B1セルに以下の数式を入力します。
    =TEXTBEFORE(A1,":")
    これは、A1セルの文字列から「:」(コロン)という区切り文字より前の文字列を抽出するという意味です。
  4. Enterキーを押して結果を確認する
    B1セルに「商品コード」と表示されれば成功です。

ADVERTISEMENT

TEXTBEFORE関数の応用例

TEXTBEFORE関数は、その基本的な使い方だけでなく、引数を工夫することでさらに多様な文字列抽出に対応できます。

複数の区切り文字がある場合の抽出

データによっては、複数の区切り文字が存在することがあります。TEXTBEFORE関数の「インスタンス番号」引数を使用することで、目的の区切り文字を正確に指定できます。

例えば、A1セルに「2023/10/26 15:30:00」という日付と時刻の文字列があるとします。この場合、日付部分(年/月/日)だけを抽出したいとします。

日付の区切り文字は「/」ですが、時刻の区切り文字も「:」です。ここでは、最初の「/」より前の部分(年)を抽出します。

  1. 年を抽出する場合
    B1セルに以下の数式を入力します。
    =TEXTBEFORE(A1,"/",1)
    この数式は、A1セルの文字列から最初の「/」より前の文字列を抽出します。結果は「2023」となります。
  2. 月を抽出する場合
    C1セルに以下の数式を入力します。
    =TEXTBEFORE(A1,"/",2)
    この数式は、A1セルの文字列から2番目の「/」より前の文字列を抽出します。結果は「10」となります。
  3. 日を抽出する場合
    D1セルに以下の数式を入力します。
    =TEXTBEFORE(D1," ")
    この数式は、A1セルの文字列から最初の「 」(スペース)より前の文字列を抽出します。結果は「2023/10/26」となります。

大文字・小文字を区別しない抽出

WebサイトのURLなど、大文字・小文字の区別が重要でない場合、「一致モード」引数を活用します。例えば、A1セルに「example.com」と「Example.com」が混在している場合でも、同じように処理したいとします。

ここでは、ドメイン名(.com)より前の部分を抽出します。

  1. 大文字・小文字を区別して抽出する場合
    B1セルに以下の数式を入力します。
    =TEXTBEFORE(A1,".")
    A1セルが「example.com」なら「example」、A1セルが「Example.com」なら「Example」が抽出されます。
  2. 大文字・小文字を区別せずに抽出する場合
    C1セルに以下の数式を入力します。
    =TEXTBEFORE(A1,".",,1)
    この数式では、「一致モード」を1に設定しています。A1セルが「example.com」でも「Example.com」でも、結果は「example」または「Example」のように、元の文字列のケースを保ったまま、最初の「.」より前の部分が抽出されます。

区切り文字が存在しない場合の処理

抽出したい区切り文字が元のテキストに存在しない場合、TEXTBEFORE関数はデフォルトでは#N/Aエラーを返します。「対象モード」引数を使用することで、この挙動を変更できます。

例えば、A1セルに「データなし」と入力されており、これを「-」で区切りたいとします。

  1. 区切り文字が存在しない場合にエラーを返す場合
    B1セルに以下の数式を入力します。
    =TEXTBEFORE(A1,"-")
    A1セルに「-」が存在しないため、B1セルには#N/Aエラーが表示されます。
  2. 区切り文字が存在しない場合に元のテキストを返す場合
    C1セルに以下の数式を入力します。
    =TEXTBEFORE(A1,"-",,,1)
    この数式では、「対象モード」を1に設定しています。A1セルに「-」が存在しないため、C1セルには元のテキスト「データなし」が表示されます。

TEXTBEFORE関数とTEXTAFTER関数の比較

TEXTBEFORE関数と対になる関数として、TEXTAFTER関数があります。TEXTAFTER関数は、指定した区切り文字の「後」の文字列を抽出します。両者を組み合わせることで、文字列の特定の部分を柔軟に抽出・分割することが可能になります。

例えば、「山田太郎 (東京)」という文字列から、氏名と所属を分けたい場合を考えます。

項目 TEXTBEFORE関数 TEXTAFTER関数
対象文字列 「山田太郎 (東京)」 「山田太郎 (東京)」
区切り文字 「 (」 「 (」
抽出結果 「山田太郎」 「東京)」

TEXTAFTER関数の結果からさらに不要な文字(この場合は「)」)を削除するには、TEXTBEFORE関数をネストして使用するなどの工夫が必要です。例えば、「東京)」から「)」を削除するには、以下のように記述します。

=TEXTBEFORE(TEXTAFTER(A1," ("),")")

この数式は、まずTEXTAFTER関数で「東京)」を抽出し、次にその結果から「)」をTEXTBEFORE関数で削除しています。結果として「東京」が得られます。

TEXTBEFORE関数でよくある入力ミスと対処

TEXTBEFORE関数を使用する際に、意図した結果が得られない場合があります。ここでは、よくある失敗パターンとその対処法を解説します。

区切り文字が正しく指定できていない

最も多い間違いは、区切り文字の指定ミスです。特に、半角・全角の違いや、不要なスペースが含まれている場合に発生します。

例: A1セルに「商品名 – ABC」と入力されているのに、数式で「:」を区切り文字に指定している。

対処法: 数式バーで区切り文字の指定を再度確認し、元のテキストと完全に一致するように修正してください。必要であれば、TRIM関数などを用いて前後の不要なスペースを削除してからTEXTBEFORE関数を適用することも有効です。

インスタンス番号の指定間違い

複数の区切り文字がある場合に、目的の区切り文字を指定するためにインスタンス番号を間違えると、意図しない文字列が抽出されてしまいます。

例: 「2023/10/26」から「10」(月)を抽出したいのに、インスタンス番号を「1」にしてしまう。

対処法: 元のテキストをよく確認し、目的の区切り文字が何番目に出現するかを正確に数えて指定してください。Excelの「検索」機能を使って区切り文字の位置を確認するのも有効です。

大文字・小文字の区別設定の誤り

「一致モード」引数を指定し忘れたり、誤った値を設定したりすると、大文字・小文字の区別によって結果が変わってしまうことがあります。

例: データベースに「apple」と「Apple」が混在しており、「.com」より前の部分を抽出したいが、大文字・小文字を区別してしまう。

対処法: 大文字・小文字を区別したい場合は、第4引数を省略するか「0」に設定します。区別したくない場合は、「1」に設定してください。必要に応じて、抽出後の文字列をUPPER関数やLOWER関数で統一することも検討してください。

Excelのバージョンによる利用可否

TEXTBEFORE関数は、Microsoft 365の最新バージョンで利用できる比較的新しい関数です。Excel 2019、Excel 2016、またはそれ以前のバージョンでは利用できません。

対処法: もし古いバージョンのExcelを使用している場合は、TEXTBEFORE関数が使えないため、従来通りLEFT関数とFIND関数などを組み合わせた数式を使用する必要があります。例えば、「商品コード:ABC-12345」から「商品コード」を抽出するには、以下の数式を使用します。

=LEFT(A1,FIND(":",A1)-1)

この数式は、FIND関数で「:」の位置を見つけ、そこから1を引いた文字数だけLEFT関数で左側から文字列を抽出します。エラー処理(区切り文字がない場合など)を加える場合は、IFERROR関数などと組み合わせる必要があります。

まとめ

TEXTBEFORE関数を習得することで、Excelでの文字列分割作業が格段に効率化されます。区切り文字の前を抽出するだけでなく、インスタンス番号や一致モード、対象モードといった引数を活用することで、より複雑なデータにも対応可能です。

今後は、TEXTAFTER関数と組み合わせて、データの前後の両方を効率的に抽出するテクニックも試してみてください。これにより、データクリーニングや分析のスピードがさらに向上するでしょう。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】