【スプレッドシート】SPLIT関数でN番目の区切り文字で分割は可能?

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

スポンサーリンク

はじめに:SPLIT関数ではN番目の区切り文字で分割できない?

SPLIT関数は区切り文字を基準に文字列を分割する便利な関数ですが、「N番目の区切り文字」を指定して分割する機能はありません。

【スプレッドシート】SPLIT関数でN番目の区切り文字で分割は可能?

たとえば、次のような数式の場合、すべてのハイフンの位置で文字列が分割されます。

例:=SPLIT(A2,"-")

そのため、特定の区切り文字(1番目や2番目など)で分割したい場合は、REGEXEXTRACT関数と正規表現を組み合わせる必要があります。

SPLIT関数の引数:(テキスト, 区切り文字, [各文字での分割], [空のテキストを削除])

スポンサーリンク

N番目の区切り文字での分割(REGEXEXTRACT関数)

REGEXEXTRACT関数は、正規表現で指定したパターンに一致する部分を抽出する関数です。キャプチャグループ () を使うことで、1つの式で複数の分割結果を表示できます。

  • .*: 任意の文字が0文字以上続くパターンに、できるだけ長く一致しようとします。
  • .*?: 任意の文字が0文字以上続くパターンに、できるだけ短く一致しようとします。
  • ():特定のパターンをまとめることを意味し、特定のまとまり(グループ)を繰り返したり、抽出したりできます。

REGEXEXTRACT関数の引数:(テキスト, 正規表現)

1番目の区切り文字で分割する

【スプレッドシート】SPLIT関数でN番目の区切り文字で分割は可能?

例:=REGEXEXTRACT(A2,"(.*?)-(.*)")

  • (.*?)ハイフンで終わる形をできるだけ短くマッチさせます
  • (.*):残りの文字列すべてにマッチさせます。

2番目の区切り文字で分割する

【スプレッドシート】SPLIT関数でN番目の区切り文字で分割は可能?

例:=REGEXEXTRACT(A2,"(.*?-.*?)-(.*)")

  • (.*?-.*?)2番目のハイフンで終わる形をできるだけ短くマッチさせます
  • (.*):残りの文字列すべてにマッチさせます。

最後の区切り文字で分割する

【スプレッドシート】SPLIT関数でN番目の区切り文字で分割は可能?

例:=REGEXEXTRACT(A2,"(.*)-(.*)")

  • (.*)ハイフンで終わる形をできるだけ長くマッチさせます
  • (.*):残りの文字列すべてにマッチさせます。

日付の文字列を分割する場合の注意点

【スプレッドシート】SPLIT関数でN番目の区切り文字で分割は可能?

日付データはそのままREGEXEXTRACT関数のテキストとして指定できないため、TEXT関数を使って文字列に変換する必要があります。

たとえば、A列にある日付を2番目のハイフンで分割したい場合、数式は次のようになります。

例:=REGEXEXTRACT(TEXT(A2,"yyyy-mm-dd"),"(.*?-.*?)-(.*)")

TEXT関数の引数:(数値, 表示形式)

スポンサーリンク

まとめ

SPLIT関数の機能: SPLIT関数では、N番目の区切り文字で分割することはできません。

REGEXEXTRACT関数の使い方: REGEXEXTRACT関数と正規表現の()(キャプチャグループ)を使うことで、特定の区切り文字で分割が可能になります。

各パターンの正規表現:

  • 1番目の分割: (.*?)-(.*)
  • 2番目の分割: (.*?-.*?)-(.*)
  • 最後の分割: (.*)-(.*)

日付データの注意点: 日付を扱う場合は、TEXT関数を使って文字列に変換する必要があります。

さらに詳しく知りたい方へ

正規表現についてもっと詳しく知りたい方は、コチラの記事もご参照ください。

REGEXEXTRACT関数についてもっと詳しく知りたい方は、コチラの記事もご参照ください。

タイトルとURLをコピーしました