shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】特定文字の前と後ろに分割して抽出する数式事例

Excelでデータを扱う際、カンマやハイフンなどの特定文字の前後にデータを分割して抽出したいことはよくあります。今回は、数式で抽出する方法の候補になる、FIND関数、TEXTBEFORE/TEXTAFTER関数、そして正規表現(REGEXEXTRACT関数)を使った方法の比較結果です。

内容:

数式の事例

区切に使用する特定の文字がハイフンの場合に前と後ろで抽出する数式例です。

FIND関数を使った方法

FIND関数は、指定した文字列がセル内で最初に出現する位置を返します。これを使ってハイフンの位置を特定し、LEFT関数やMID関数と組み合わせてデータを分割します。

ハイフンの前の部分を抽出: =LEFT(A1, FIND("-", A1) - 1)  
ハイフンの後の部分を抽出: =MID(A1, FIND("-", A1) + 1, LEN(A1)) 

TEXTBEFORE/TEXTAFTER関数を使った方法

TEXTBEFORE関数とTEXTAFTER関数は、指定した文字列の前後のテキストを抽出する関数です。これらを使うと、より簡単にデータを分割できます。

ただし、Microsoft365のExcelに2022年に追加された関数です。

ハイフンの前の部分を抽出: =TEXTBEFORE(A1, "-")
ハイフンの後の部分を抽出: =TEXTAFTER(A1, "-") 

参考: TEXTBEFORE 関数 - Microsoft サポート

正規表現(REGEXEXTRACT関数)を使った方法

REGEXEXTRACT 関数は、指定された正規表現(文字列パターン)に基づいて文字列からテキストを抽出する関数です。この関数はMicrosoft365のExcelに2024年に追加された関数です。

ハイフンの前の部分を抽出: =REGEXEXTRACT(A1,"^[^-]+")
ハイフンの後の部分を抽出: =REGEXEXTRACT(A1,"[^-]+$")

参考: REGEXEXTRACT 関数 - Microsoft サポート

上記で赤字部分は文字列のパターンを示す正規表現です。

なお、^[^-]+は文字列の先頭からハイフン以外の文字までをキャプチャするためのパターンです。

  • ^ は文字列の先頭を示します。
  • [^-]+ はハイフン以外の文字を1回以上繰り返す部分を示します。

[^-]+$は、文字列の末尾からハイフン以外の文字までをキャプチャするためのパターンです。

いずれにしても、文字列のパターンを示す正規表現部分はChatGPTやCopilotなどの生成AIで作成すると簡単です。

各数式の計算事例

「xx-123」という文字列で、ハイフン前、ハイフン後を抽出する計算事例です。

各関数で"xx-123"の文字列からハイフン前とハイフン後を抽出

FIND関数、TEXTBEFORE/TEXTAFTER関数、REGEXEXTRACT関数の計算例

上記の5行目の数式は、

=REGEXEXTRACT(A5,"(.*)-(.*)",2)

という1つの数式で、ハイフン前と後の2つに分割、抽出もできています。

正規表現を活用すると、FIND関数やTEXTBEFORE/TEXTAFTER関数で複雑な数式となる抽出パターンで簡素化できる可能性があります。以下はその一例です。

shikumika.org

使い分けの方法

FIND関数は、シンプルで使いやすいが、複雑なデータでは数式が難解になります。

TEXTBEFORE/TEXTAFTER関数は、簡単にデータを分割できるが、利用できるExcelバージョンは限定されます。

REGEXEXTRACT関数は、複雑なデータにも対応可能だが、利用できるExcelバージョンは限定され、正規表現にも多少慣れが必要です。

よって、Microsoft365のExcelで文字列を抽出する場合はTEXTBEFORE/TEXTAFTER関数が第一選択で、数式が複雑になるケースではREGEXEXTRACT関数などの正規表現を利用できる関数を利用すると良さそうです。

以上、Excelで特定文字の前と後ろにデータを分割し、抽出する数式事例でした。