残業を減らす!Officeテクニック

Excelのセル内で「,」や「/」で区切られたデータを「列」や「行」に分割するテク

区切り文字を含むデータを簡単に分割するには?

 関連する情報が「,」や「/」などの記号で区切られて、1つのセルに入力されていることがありますよね。業務システムなどから出力されるCSVファイルの1レコードなどは典型的な例です。

 手入力でも区切り文字を挟んで情報を羅列することがあります。そして、後になって“区切り文字で分割したい”という課題が出てくるはずです。

区切り文字「,」で区切られたデータの例

 大量のデータなら[区切り文字指定ウィザード]やPowerQueryの利用を検討すると思いますが、数件ならコピペで何とかしているかもしれません。今回はそんな時に役立つ、区切り文字で手軽に分割できるTEXTSPLIT関数を紹介したいと思います。

横方向の分割なら引数は2つだけ

 まずはTEXTSPLIT関数の構文を紹介します。6つの引数のうち、最初の2つ[文字列]と[列区切り]を使うことがほとんどだと思います。結果を縦方向に分割して表示したいときは、[列区切り]を省略して[行区切り]を指定します。

TEXTSPLIT関数の構文。分割する対象を[文字列]に指定する。区切り文字を[列区切り](横方向)、もしくは[行区切り](縦方向)に指定する。[空文字列の扱い]は連続する区切り文字を無視(TRUE)するか、含める(FALSE)かを指定する。省略すると「TRUE」

 なお、Excelのバージョンによって、引数のチップが英字で表示されることがありますが、意味は上記の通りです。冒頭のサンプルを例に「,」で区切ってみましょう。

セルC8に「=TEXTSPLIT(C2,",")」と入力する
「,」の位置で区切られた。結果はスピルで表示される
オートフィルでコピーすればほかの行も同様に分割可能

 結果を縦方向に表示したい場合は引数[列区切り]を省略して[行区切り]に区切り文字を指定します。

セルC8に「=TEXTSPLIT(C2,,",")」と入力する
「,」の位置で区切られて縦方向に結果が表示された

セル内で改行されている場合

 セル内で改行して列挙していることもありますよね。区切り文字として、改行を表す「Char(10)」を指定してください。数式の記述方法は上記と同じです。

区切り文字を「Char(10)」として、セルE2に「=TEXTSPLIT(C2,CHAR(10))」と入力するだけ
オートフィルでコピーすれば完了だ

区切り文字が混在している場合

 区切り文字が混在しているケースを考えてみましょう。以下は「,」と「、」が含まれており、正しく分割されていない例です。区切り文字の混在は手入力ではありがちですね。

前述の数式と同じように「=TEXTSPLIT(C2,",")」と入力したが、「、」では分割できていない

 検索・置換して区切り文字を統一する必要はありません。含まれる区切り文字を「{}」で囲んで指定します。この例では「=TEXTSPLIT(C2,{",","、"})」のように指定します。

セルC8に「=TEXTSPLIT(C2,{",","、"})」と入力する
「、」も区切り文字として分割できた

 TEXTSPLITは指定する引数も少なく、使いやすい関数です。ぜひ活用してみてください。応用例として、縦方向に分割した結果をSORT関数で並べ替えて、TEXTJOIN関数で結合し直すなども考えられます。