ADVERTISEMENT

【Googleスプレッドシート】TEXTAFTER関数で区切り文字より後を取得!拡張子だけ抜き出す

【Googleスプレッドシート】TEXTAFTER関数で区切り文字より後を取得!拡張子だけ抜き出す
🛡️ 超解決

ファイル名から拡張子だけを取り出したいと思ったことはありませんか。例えば「report_2024.xlsx」から「xlsx」だけを抜き出す方法です。従来はMID関数やFIND関数を組み合わせる必要がありましたが、TEXTAFTER関数を使えば1つの関数で簡単に取得できます。この記事ではTEXTAFTER関数の基本的な使い方から、拡張子を抜き出す実用的な方法までを解説します。

【要点】TEXTAFTER関数で区切り文字以降をスマートに取得

  • =TEXTAFTER(文字列, 区切り文字): 指定した区切り文字より後ろの文字列を抽出します。第一引数に元の文字列、第二引数に区切り文字を指定するだけです。
  • =TEXTAFTER(A1, “.”) で拡張子を取得: ファイル名から拡張子だけを抜き出すには、区切り文字にドットを指定します。複数ドットがある場合は引数で調整できます。
  • IFERRORでエラー対策: 拡張子がないファイル名で#N/Aエラーが発生するのを防ぐには、IFERRORでラップして空文字を返すようにします。

ADVERTISEMENT

TEXTAFTER関数の仕組みと基本構文

TEXTAFTER関数は、指定した区切り文字よりも後ろにある文字列を返す関数です。Googleスプレッドシートの最新のテキスト関数の一つで、2022年頃から利用できるようになりました。従来のMID関数とFIND関数の組み合わせに比べて、読みやすくて直感的な書き方ができるのがメリットです。

基本の構文は次の通りです。

=TEXTAFTER(テキスト, 区切り文字, [出現位置], [大文字小文字の区別], [末尾から検索], [エラー時の値])

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

  • テキスト(必須): 抽出元の文字列を指定します。
  • 区切り文字(必須): どこで区切るかの文字列を指定します。
  • 出現位置(省略可): 区切り文字が複数ある場合に、何番目の区切りから後ろを取得するかを指定します。1から始まる整数で、デフォルトは1です。
  • 大文字小文字の区別(省略可): 0で区別する(デフォルト)、1で区別しないを指定します。
  • 末尾から検索(省略可): FALSEで先頭から(デフォルト)、TRUEで末尾から検索します。TRUEにすると、最後の区切り文字から後ろを取得できます。
  • エラー時の値(省略可): 区切り文字が見つからなかった場合に返す値を指定します。省略すると#N/Aエラーになります。

例えば「sample.csv」から拡張子を取得するには、次のように書きます。

=TEXTAFTER("sample.csv", ".")

結果は「csv」になります。このように、第二引数にドットを指定するだけで、ドットより後ろの文字列をすべて取得できます。

TEXTAFTER関数で拡張子だけを抜き出す手順

それでは、実際のスプレッドシートで拡張子を抜き出す手順を説明します。ここでは、ファイル名がA列に入力されていると仮定します。

  1. 基本の式を入力する
    A1セルに「data.csv」と入力されている場合、B1セルに次の式を入力します。
    =TEXTAFTER(A1, ".")
    これで「csv」と表示されます。
  2. 複数ドットがあるファイル名に対応する
    「my.file.txt」のようにドットが複数ある場合、デフォルトでは最初のドットから後ろ(「file.txt」)が返ります。最後のドットから後ろ(「txt」)を取得したいときは、末尾から検索の引数にTRUEを指定します。
    =TEXTAFTER(A1, ".", , , TRUE)
    これで「txt」が取得できます。または出現位置に2を指定し、2番目のドットから後ろを取得する方法もあります。
  3. 拡張子がない場合のエラー対策をする
    「report」のように拡張子がないファイル名では、上の式は#N/Aエラーになります。それを防ぐには、IFERROR関数でラップして空文字を返します。
    =IFERROR(TEXTAFTER(A1, "."), "")
    これで拡張子がないセルは空白になります。
  4. 大文字小文字を区別せずに抽出する
    デフォルトでは大文字小文字を区別します。「REPORT.CSV」のようなファイル名で「csv」を取りたいときは、大文字小文字を区別しないように第4引数に1を指定します。
    =TEXTAFTER(A1, ".csv", , 1)
    ただし、この場合は区切り文字に「.csv」と指定しているので、注意が必要です。実際には区切り文字を小文字のドットだけにしておき、大文字小文字を区別しない設定にすると便利です。

これらの手順を組み合わせれば、どんなファイル名リストからも拡張子を安全に抽出できます。

TEXTAFTER関数使用時の注意点

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

区切り文字がテキスト内に存在しないと、TEXTAFTER関数は#N/Aエラーを返します。このエラーを防ぐには、第6引数にデフォルト値を指定する方法もあります。=TEXTAFTER(A1, ".", , , , "")とすれば、見つからなかったときに空文字を返せます。ただし、この引数は他の引数が省略されていると正しく認識されない場合があるので、IFERRORを使うほうが確実です。

大文字小文字の扱い

TEXTAFTER関数はデフォルトで大文字小文字を区別します。区別したくない場合は、第4引数に1を指定します。例えば、”File.TXT” から “txt” を取得したい場合、=TEXTAFTER(A1, ".", , 1) とすると、”TXT” が返ります。ただし、戻り値は元のテキストの大文字小文字を保持するため、結果が大文字になることに注意してください。

空白文字を含む区切り文字

区切り文字に空白を含む文字列を指定することもできます。例えば、”商品名 – 価格” から ” – ” の後ろを抽出するといった使い方も可能です。ただし、先頭や末尾の空白に注意してください。区切り文字が空白だけの場合、意図しない結果になることがあります。

出現位置と末尾から検索の併用

出現位置と末尾から検索を同時に指定する場合、それらの挙動が複雑になることがあります。基本的には、出現位置は先頭から数えた区切り文字の番号を指定し、末尾から検索は「末尾から数えて何番目」という逆順の指定になります。混乱しやすいため、どちらか一方だけを使うことをおすすめします。拡張子の取得には、末尾から検索をTRUEにする方法が直感的です。

ADVERTISEMENT

TEXTAFTERと他の文字列抽出関数の比較

関数名 構文例 得意な用途 備考
TEXTAFTER =TEXTAFTER(A1,”.”) 区切り文字以降の文字列を取得 引数が豊富で柔軟、読みやすい
TEXTBEFORE =TEXTBEFORE(A1,”.”) 区切り文字以前の文字列を取得 TEXTAFTERの兄弟関数、同様の引数
MID+FIND =MID(A1,FIND(“.”,A1)+1,100) 任意の位置から指定文字数分取得 長くて複雑、エラー処理が必要
SPLIT =INDEX(SPLIT(A1,”.”),2) 区切り文字で分割してリスト化 分割後の要素をINDEXで指定、重い場合あり
REGEXEXTRACT =REGEXEXTRACT(A1,”\\.(.+)$”) 正規表現で複雑な抽出 正規表現の知識が必要で難易度が高い

TEXTAFTER関数はこの中でも特にシンプルで、拡張子の抽出には最も適した関数です。特に、区切り文字が複数ある場合や大文字小文字の扱いなど、細かい制御が必要なときに真価を発揮します。

まとめ

TEXTAFTER関数を使えば、区切り文字より後ろの文字列を簡単に取得できます。拡張子の抽出は、=TEXTAFTER(A1, “.”)というシンプルな式で実現でき、IFERRORと組み合わせればエラーも安全に処理できます。また、末尾から検索の引数を使えば、複数のドットが含まれるファイル名にも対応可能です。この関数は拡張子以外にも、URLのパス部分やメールアドレスのドメインなど、様々な場面で応用できます。ぜひ実際のスプレッドシートで試してみて、TEXTAFTER関数の便利さを実感してください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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