- SPLIT関数の第2引数(区切り文字)に2文字以上の文字列を指定すれば、それに含まれる各1文字が区切り文字となります。全体を1つの区切り文字とすることも可能です。
- SUBSTITUTE関数やREGEXREPLACE関数を併用することで、2文字以上の複数種類の区切り文字を設定することができます。
区切り文字の長さが1文字の場合
まずは単純な例です。
次の画像ではSPLIT関数を使い、B3セルのテキストを「-」と「/」の2種類の区切り文字で分割しています。
D3セル
=SPLIT(B3,"-/")
第2引数を「"-/"」としています。このように2文字以上の文字列を指定することで、それに含まれるそれぞれの文字が区切り文字とみなされます。
次の画像では式を「=SPLIT(B3,"x-")」としています。
テキスト中に「x-」という部分が1か所ありますのでここだけで区切られるようにも見えますが、実際は「x」と「-」のそれぞれで区切られるので注意が必要です。
本題からは外れますが、第3引数(各文字での分割)にFALSEを指定すれば、指定した文字列の全体が1つの区切り文字として扱われます。
D3セル
=SPLIT(B3,"x-",FALSE)
区切り文字の長さが2文字以上の場合
上記のようなSPLIT関数の仕様では「2文字以上の区切り文字を複数指定する」ということができません。
そこで次の画像ではSUBSTITUTE関数を併用することにより、「and」と「or」の2種類の文字列を区切り文字として分割しています。
D3セル
=SPLIT(SUBSTITUTE(B3,"or","and"),"and",FALSE)
SUBSTITUTE関数により「or」を「and」に置き換えておき、SPLIT関数で「and」を区切り文字に指定することで結果的に「and」と「or」の両方の位置で区切られます。
最後のFALSEを忘れると「a」と「n」と「d」による分割になるので、テキストに別の「a」「n」「d」が含まれる場合に異なる結果となります。
ただし区切り文字列の種類が増えるとSUBSTITUTE関数をネストする必要があり面倒になります。
そこで次の画像ではREGEXREPLACE関数を併用することで「and」「or」「with」の3種の文字列を区切り文字として分割しています。
D3セル
=SPLIT(REGEXREPLACE(B3,"and|or|with","and"),"and",FALSE)
REGEXREPLACE関数を使い、3種の文字列をいずれも「and」に統一(一括変換)してしまい、SPLIT関数で「and」を区切り文字に指定しています。もちろん「and|」は省略できますが、あえて残しています。
次の画像も同じ内容ですが、置き換え先を「_」の1文字にすることで、SPLIT関数の第3引数のFALSEを指定せずに済ませています。
D3セル
=SPLIT(REGEXREPLACE(B3,"and|or|with","_"),"_")
ただし元のテキストに「_」が含まれていればそこで分割されてしまいますので、適切な置換先を選ぶ必要が生じます。
最後に、区切り文字となる文字列をリストから参照する例です。
F3セル
=SPLIT(REGEXREPLACE(B3,JOIN("|",D3:D5),"_"),"_")
「JOIN("|",D3:D5)」により、リスト(D3:D5)に含まれる文字列を「|」を挿みつつ結合しています。つまり「and|or|with」という文字列が得られます。これをREGEXREPLACE関数に渡すことで上記の例と同じ結果が得られています。