【新関数】エクセル TEXTSPLIT関数の使い方
【新関数】エクセル TEXTSPLIT関数の使い方
Microsoft365環境のエクセルでは、2022年8月下旬頃からTEXTSPLIT関数が使えるようになりました。
TEXTSPLIT関数を使うと、1つのセルに入力された文字列データを、指定した区切り文字で分けて、別々のセルに表示させることができます。
↓
なお、TEXTSPLIT関数の表示結果は、数式を入力したセルだけでなく、その右や下のセルにも表示されることに注意してください。
この例では、数式はB2セルにしか入力していません。一方で、計算結果は、B2セルだけでなくC2セル、D2セルにも表示されています(このような挙動をスピルといいます)。
この記事の目次
TEXTSPLIT関数の用途
TEXTSPLIT関数を使うと、空白で区切られた姓名を分割したり、CSVデータをカンマで分割することが、とても簡単にできるようになります。
従来は、「区切り文字」の機能を使うかFIND関数などいくつかの関数を組み合わせてデータを分割する必要がありました。今後は、TEXTSPLIT関数を使うだけで、データを分割できるようになります。
TEXTSPLIT関数の書式
TEXTSPLIT関数の引数の意味
TEXTSPLIT関数を使うときには、次のように最低2つ(~最高6つ)の引数を指定します。
引数名 | 意味 | 例 | 要否 |
---|---|---|---|
①文字列 (Text) |
分割したいテキストを入力します | A2 | 必須 |
②横区切り文字 (Col_delimiter) |
横に分割するときに使う文字または文字列 | "-" | 必須 |
③縦区切り文字 (Row_delimiter) |
縦に分割するときに使う文字または文字列 | (略) | 省略可 |
④空欄を無視するか (Ignore_empty) |
空欄を無視するかどうか
|
(略) | 省略可 |
⑤一致モード (Match_mode) |
区切り文字を検索する時、大文字・小文字を区別するか(※注意事項あり)
|
(略) | 省略可 |
⑥列数不足時の値 (Pad_with) |
各行の横方向のデータ不足時に表示する値
|
(略) | 省略可 |
TEXTSPLIT関数の引数はたくさんありますが、多くの場合、「①文字列」と「②横区切り文字」を指定すれば十分です。
実務的には、3つ目以降の引数(「③縦区切り文字」「 ④空欄を無視する」「⑤一致モード」「 ⑥列数不足時の値」)を使うことは、ほぼありません。意味を把握するのが面倒なら無視しましょう。
TEXTSPLIT関数を使うときの注意点
「②横区切り文字」「③縦区切り文字」には複数の文字を指定できる
「②横区切り文字」「③縦区切り文字」には複数の文字を指定できます。
「連続した2文字以上」で区切ることもできますし、「複数の文字のどれか」で区切るような処理もできます。
連続した2文字以上で区切る
「②横区切り文字」「③縦区切り文字」に2文字以上の文字列を指定すると、その文字列で区切ることができます。
複数の文字のどれかで区切る
「{」「}」の中に複数の文字を「,」(カンマ)で区切って入力すると、指定した文字のどれかで区切ることができます。
この2つを組み合わせて、2文字以上の区切り文字を複数指定することもできます。
TEXTSPLIT関数のいろいろな使用例
この記事のここより下の部分では、3つ目以降の引数の話を書いています。
冒頭でも書いたとおり、これ以降は実務的にはあまり使う必要のない機能です。興味がなければ、読み飛ばして、まとめまで進んでください。
「③縦区切り文字」を指定する
「③縦区切り文字」を指定すると、横方向だけでなく縦方向にもデータを分離できます。
「④空欄を無視する」を指定する
「④空欄を無視する」を指定すると、元データに区切り文字が連続して表れたときの挙動が変わります。
- FALSE(または省略)にすると、1つのセルとして出力されます
- TRUEにすると、セルとして出力されず無視されます
- 「④空欄を無視する」をFALSEにするか省略した場合
-
元データを見ると、「a,,c,d」のように「,」が2回連続で出てきます。
「④空欄を無視する」をFALSEにすると、この2つの「,」の間にも(空欄の)データがあるものと考えて各セルにデータを分割します。
=TEXTSPLIT(A2 , "," , , FALSE) - 「④空欄を無視する」をTRUEに指定した場合
-
「④空欄を無視する」をTRUEにすると、「a」のすぐ右のセルに「c」が表示されます。
=TEXTSPLIT(A2 , "," , , TRUE)
「⑤一致モード」を指定する
「⑤一致モード」を指定すると、区切り文字を検索するときの、挙動が変わります(現時点では、挙動に注意すべき事項があります)。
- 「0」を指定するか省略すると、区切り文字の検索時に、英字の大文字・小文字を区別して検索されます。
- 「1」を指定すると、区切り文字の検索時に、英字の大文字・小文字が区別されません。
- 「⑤一致モード」を「0」にするか省略した場合
-
区切り文字の検索時に、英字の大文字・小文字を区別して検索されます。
=TEXTSPLIT(A2 , "x" , , , 0) - 「⑤一致モード」を「1」にした場合
-
区切り文字の検索時に、英字の大文字・小文字を区別しません。
=TEXTSPLIT(A2 , "x" , , , 1)
「⑤一致モード」についての注意
2022年8月22日時点、私の手元では「⑤一致モード」に「1」を指定すると、表示結果が全部小文字になります。
本来、意図した仕様ではない可能性がありますので、ご注意ください。
「⑥列数不足時の値」を指定する
通常、縦・横両方に分割する場合で、(他の行と比較して)横方向のデータ数が不足する場合には「#N/A」が表示されます。
このような場合に、「⑥列数不足時の値」を指定すると、「#N/A」の代わりに表示する値を指定できます。挙動が少しややこしいので、実例を見て、感覚を掴んでください。
なお、横方向あるいは縦方向だけに分割する場合には、横方向のデータが不足することは絶対にないので、この値を指定する意味はありません。
- 「⑥列数不足時の値」を指定しない場合
-
元データを見ると、「11,12;21,,23;31;41,42,43」というように、何か所かのデータが欠けています。
このような場合、各行ごとで見たときに横方向のデータが足りない1行目と3行目に「#N/A」と表示されます。
=TEXTSPLIT(A2 , "," , ";")なお、2行目は2列目のデータ(D3セル)が欠けていますが「#N/A」とは表示されていないことに注意してください。
このように、各行の途中のデータがない場合には空欄のままになります。
- 「⑥列数不足時の値」に「-」を指定した場合
-
「#N/A」の代わりに「-」と表示されます。
=TEXTSPLIT(A2 , "," , ";" , , , "-")
(参考)「④空欄を無視する」と「⑥列数不足時の値」を併用する
先ほどの例で、「④空欄を無視する」をTRUE、「⑥列数不足時の値」の指定を省略すると、次のように2行目(E3セル)にもエラーが表示されます。
2行目の空欄を無視すると、2行目(C3~E3セル)には「21」と「23」の2列分しかデータがありません。その結果、3列目(E3セル)に表示すべきデータがないので「#N/A」が表示されます。
このように、「④空欄を無視する」をTRUEにした結果、各行の列数が変化して、末尾に「#N/A」エラーが表示される場合もあることに注意しましょう。
「#N/A」を消したいときには、「⑥列数不足時の値」に「-」を指定しましょう。これで、E3セルに「-」と表示されます。
Microsoft公式ページ
Microsoft公式ページへのリンクを掲載しておきます。公式の情報を確認したいときには、下記リンクからご覧ください。
翻訳の関係で、日本語版の使用例はとてもわかりにくい状態になっています。使用例を見たいときには、英語版も合わせて見ることをおすすめします。
Microsoftの公式ページ(日本語)
Microsoftの公式ページ(英語)
まとめ
セルの値を、区切り文字で分解したいときには、TEXTSPLIT関数で簡単に分解できます。
空白で区切られた姓名を分割したり、CSVデータをカンマで分割する場合に使うと、とても便利です。
Microsoft365を使っていて、作成したデータを旧バージョンで使う見込みがない場合には、積極的に使いましょう。