ADVERTISEMENT

【Googleスプレッドシート】TEXTBEFORE関数で区切り文字より前を取得!ファイル名の前半抽出

【Googleスプレッドシート】TEXTBEFORE関数で区切り文字より前を取得!ファイル名の前半抽出
🛡️ 超解決

ファイル名から先頭部分だけを取り出したいと感じたことはありませんか。例えば「報告書_2024年.xlsx」というファイル名から「報告書」の部分だけを抽出したい場合などです。手動で区切り文字を探して切り取るのは手間がかかりますが、TEXTBEFORE関数を使えば一発で解決できます。この記事ではTEXTBEFORE関数の基本から実践的な使い方まで、具体例を交えて解説します。

【要点】TEXTBEFORE関数で区切り文字より前のテキストを抽出する3つのステップ

  • =TEXTBEFORE(テキスト, 区切り文字, [インスタンス番号]): 第1引数に対象セル、第2引数に区切り文字を指定するだけで、その文字より前をすべて取得できます。
  • ファイル名から拡張子より前を取得: 区切り文字に「.」を指定すれば、拡張子を除いたファイル名の基本部分を簡単に抽出できます。
  • インスタンス番号で柔軟な抽出: 同じ区切り文字が複数ある場合、第3引数で何番目の区切り文字を基準にするかを指定して、任意の位置より前を取得できます。

ADVERTISEMENT

TEXTBEFORE関数がテキスト抽出を効率化する仕組み

TEXTBEFORE関数は、指定した区切り文字が出現する位置を検出し、その手前のテキストを取り出す関数です。従来はFIND関数とLEFT関数を組み合わせる必要がありましたが、TEXTBEFOREなら1つの関数で完結します。例えば「A_201_B_C」という文字列から、最初のアンダーバーより前の「A」を抽出したい場合、=TEXTBEFORE(“A_201_B_C”, “_”) と書くだけです。区切り文字が複数ある場合は、第3引数でインスタンス番号を指定することで、何番目の区切り文字を基準にするかを制御できます。この関数は2022年のアップデートで追加され、現在はすべてのGoogleアカウントで使用できます。

TEXTBEFORE関数でファイル名の前半を抽出する基本手順

まずは最もシンプルな使い方から解説します。以下の手順で、区切り文字より前の文字列を取り出せます。

  1. 対象のセルと区切り文字を準備する
    抽出したい文字列が入力されたセル(例:A1セルに「報告書_2024年.xlsx」)と、区切り文字(例:アンダーバー「_」)を決めます。
  2. TEXTBEFORE関数を入力する
    結果を表示したいセルに「=TEXTBEFORE(A1, “_”)」と入力します。これにより、最初のアンダーバーより前の「報告書」が抽出されます。
  3. Enterキーで確定する
    関数が自動計算され、指定した区切り文字より前のテキストが表示されます。複数のセルに適用する場合は、オートフィルでコピーしてください。

ファイル名から拡張子より前の部分を抽出する例

ファイル名から拡張子を除いた基本部分だけ欲しい場合は、区切り文字に「.(ドット)」を指定します。例えばA1に「資料_最終版.pdf」と入力されている場合、「=TEXTBEFORE(A1, “.”)」と書けば「資料_最終版」が得られます。ただしファイル名にドットが複数含まれる場合(例:「ver1.2.3.txt」)は、最初のドットより前「ver1」だけが抽出されます。すべてのドットより前を取得したい場合は、後述するインスタンス番号の応用や、別の関数との組み合わせを検討します。

区切り文字が複数ある場合のインスタンス番号指定

同じ区切り文字が文字列内に複数存在する場合、第3引数(インスタンス番号)で何番目の区切り文字を基準にするかを指定できます。例えばA1に「A_B_C_D」とある場合、=TEXTBEFORE(A1, “_”, 2) で2番目のアンダーバーより前の「A_B」が抽出されます。インスタンス番号を省略した場合は1が適用され、最初の区切り文字が基準になります。この機能を使えば、複数階層のデータから必要な部分だけを取り出す際に便利です。

TEXTBEFORE関数使用時の注意点とよくあるトラブル

便利なTEXTBEFORE関数ですが、使い方を誤ると期待した結果が得られない場合があります。以下に主な注意点をまとめます。

区切り文字が見つからない場合のエラー

指定した区切り文字がテキスト内に存在しない場合、関数は#N/Aエラーを返します。このエラーを防ぐには、IFERROR関数でラップする方法が有効です。例えば「=IFERROR(TEXTBEFORE(A1, “,”), “区切りなし”)」と記述すれば、区切り文字がない場合は任意の文字列を表示できます。

大文字と小文字の区別

TEXTBEFORE関数はデフォルトで大文字と小文字を区別します。そのため区切り文字「abc」と「ABC」は異なるものとして扱われます。大文字小文字を区別せずに抽出したい場合は、後述するTEXTBEFOREの代替方法や、REGEXEXTRACT関数を検討してください。

空白や改行が区切り文字に含まれている場合

区切り文字として引用符で囲む際、意図しない空白が混入しないよう注意してください。例えば区切り文字を「, 」のようにカンマ+スペースにしたい場合、引数は「”, “」と正確に入力する必要があります。スペースを入れ忘れると正しく区切れません。

ADVERTISEMENT

TEXTBEFOREと従来のテキスト抽出方法の比較

方法 構文例 特徴 使用難易度
TEXTBEFORE関数 =TEXTBEFORE(A1,”,”) 1つの関数で完結、インスタンス番号で柔軟性あり 簡単
LEFT+FIND関数 =LEFT(A1,FIND(“,”,A1)-1) 区切り文字が見つからないとエラー、複数区切りに弱い やや難しい
SPLIT関数 =INDEX(SPLIT(A1,”,”),1) 配列を生成してから先頭要素を取得、横展開が必要 中程度

従来の方法と比べてTEXTBEFORE関数はシンプルで直感的に使えます。特に区切り文字が1つだけの単純なケースでは記述量が少なく、ミスも起こりにくいです。ただし、大文字小文字を区別したくない場合や正規表現を使いたい場合は、REGEXEXTRACT関数のほうが適していることもあります。

まとめ

TEXTBEFORE関数を使えば、区切り文字より前のテキストを簡単に抽出できます。ファイル名から拡張子を除いた部分や、特定の記号より前のデータを取得する際に非常に便利です。基本的な使い方は「=TEXTBEFORE(セル, “区切り文字”)」と入力するだけなので、Googleスプレッドシート初心者でもすぐに活用できます。応用として、インスタンス番号を指定して複数の区切り文字を制御したり、IFERRORでエラーを回避する方法も覚えておくと良いでしょう。ぜひ実際のデータで試してみて、テキスト処理の効率を向上させてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。