
GoogleスプレッドシートのSPLIT関数は便利ですが、N番目の区切り文字(例えば2番目のハイフンなど)で文字列を分割することはできません。そこで、この記事ではREGEXEXTRACT関数を使って、区切り文字の数が決まっていない文字列でも、柔軟に分割する方法を解説します。
はじめに:SPLIT関数ではN番目の区切り文字で分割できない?
SPLIT関数は区切り文字を基準に文字列を分割する便利な関数ですが、「N番目の区切り文字」を指定して分割する機能はありません。

たとえば、次のような数式の場合、すべてのハイフンの位置で文字列が分割されます。
例:=SPLIT(A2,"-")
そのため、特定の区切り文字(1番目や2番目など)で分割したい場合は、REGEXEXTRACT関数と正規表現を組み合わせる必要があります。
SPLIT関数の引数:(テキスト, 区切り文字, [各文字での分割], [空のテキストを削除])
N番目の区切り文字での分割(REGEXEXTRACT関数)
REGEXEXTRACT関数は、正規表現で指定したパターンに一致する部分を抽出する関数です。キャプチャグループ () を使うことで、1つの式で複数の分割結果を表示できます。
.*: 任意の文字が0文字以上続くパターンに、できるだけ長く一致しようとします。.*?: 任意の文字が0文字以上続くパターンに、できるだけ短く一致しようとします。():特定のパターンをまとめることを意味し、特定のまとまり(グループ)を繰り返したり、抽出したりできます。
REGEXEXTRACT関数の引数:(テキスト, 正規表現)
1番目の区切り文字で分割する

例:=REGEXEXTRACT(A2,"(.*?)-(.*)")
(.*?):ハイフンで終わる形をできるだけ短くマッチさせます。(.*):残りの文字列すべてにマッチさせます。
2番目の区切り文字で分割する

例:=REGEXEXTRACT(A2,"(.*?-.*?)-(.*)")
(.*?-.*?):2番目のハイフンで終わる形をできるだけ短くマッチさせます。(.*):残りの文字列すべてにマッチさせます。
最後の区切り文字で分割する

例:=REGEXEXTRACT(A2,"(.*)-(.*)")
(.*):ハイフンで終わる形をできるだけ長くマッチさせます。(.*):残りの文字列すべてにマッチさせます。
日付の文字列を分割する場合の注意点

日付データはそのままREGEXEXTRACT関数のテキストとして指定できないため、TEXT関数を使って文字列に変換する必要があります。
たとえば、A列にある日付を2番目のハイフンで分割したい場合、数式は次のようになります。
例:=REGEXEXTRACT(TEXT(A2,"yyyy-mm-dd"),"(.*?-.*?)-(.*)")
TEXT関数の引数:(数値, 表示形式)
まとめ
SPLIT関数の機能: SPLIT関数では、N番目の区切り文字で分割することはできません。
REGEXEXTRACT関数の使い方: REGEXEXTRACT関数と正規表現の()(キャプチャグループ)を使うことで、特定の区切り文字で分割が可能になります。
各パターンの正規表現:
- 1番目の分割:
(.*?)-(.*) - 2番目の分割:
(.*?-.*?)-(.*) - 最後の分割:
(.*)-(.*)
日付データの注意点: 日付を扱う場合は、TEXT関数を使って文字列に変換する必要があります。
さらに詳しく知りたい方へ
正規表現についてもっと詳しく知りたい方は、コチラの記事もご参照ください。
REGEXEXTRACT関数についてもっと詳しく知りたい方は、コチラの記事もご参照ください。