Excel関数 逆引き集 | 区切り文字で分割 → TEXTSPLIT

Excel
スポンサーリンク

概要

「カンマ区切りの文字列を一気にセルに分けたい」
「’姓 名 部署 メール’ みたいな1セルの情報を縦や横に分割したい」
「CSVっぽい文字をコピペして、そのまま表にしたい」

こういう “区切り文字での分割” を一発でやってくれるのが TEXTSPLIT 関数です。

TEXTSPLIT は
「区切り文字を指定して、文字列を行や列に自動展開する」
動的配列関数です。手作業の「区切り位置指定ウィザード」を、数式で再現できるイメージです。


TEXTSPLIT の基本

TEXTSPLIT の書式

=TEXTSPLIT(文字列, 列区切り, [行区切り], [無視する空文字], [パディング])

文字列
分割したい元の文字列(セル参照でも、”A,B,C” のような直接指定でもOK)。

列区切り
「列方向(横方向)に分割するときの区切り文字」。
例:”, “、”/”、” “(スペース)、CHAR(9)(タブ)など。

行区切り(省略可)
「行方向(縦方向)に分割するときの区切り文字」。
改行で区切りたいときは CHAR(10) を指定します。

無視する空文字(省略可)
TRUE:区切りが連続して空要素があっても無視する
FALSE:空要素も「空セル」として出力する
省略すると TRUE と同じイメージで使われることが多いです(バージョンによって挙動が微妙に違うので、明示しておくと安心)。

パディング(省略可)
分割結果の長さが不揃いなとき、足りない部分を何で埋めるか(通常は “” を指定)。


基本パターン:カンマ区切りで横に分割

1セルに入った「A,B,C,D」を横方向に展開する

A2 に次の文字列が入っているとします。

東京,大阪,名古屋,福岡

これをカンマ区切りで、右方向に分割して並べたいときはこう書きます。

=TEXTSPLIT(A2, ",")

結果(B2 から右方向に自動で spill)
B2:東京
C2:大阪
D2:名古屋
E2:福岡

「列区切り」に "," を渡しただけです。
カンマ区切りの一覧を、表として一瞬で展開できます。


行方向に分割:改行区切りで縦に並べる

改行ごとに縦方向に分割する

A2 に、改行を含むテキストが入っているとします。

東京
大阪
名古屋
福岡

これを、行ごとに別セルへ縦に展開するには「行区切り」に CHAR(10) を指定します。

=TEXTSPLIT(A2, , CHAR(10))

列区切りは空欄(,だけ書く)にして、
行区切り引数に CHAR(10) を渡すのがポイントです。

結果(B2 から下方向に spill)
B2:東京
B3:大阪
B4:名古屋
B5:福岡


行・列同時指定:表形式のテキストを一気に分割

カンマ区切り+改行区切りの“擬似CSV”を表にする

A2 に次のようなテキストが入っているとします(行は改行、列はカンマ)。

東京,大阪,名古屋
福岡,札幌,仙台

これをそのまま表にしたいときは、列区切りと行区切りを両方指定します。

=TEXTSPLIT(A2, ",", CHAR(10))

結果(B2:D3 に spill)
B2:東京 C2:大阪 D2:名古屋
B3:福岡 C3:札幌 D3:仙台

「簡易CSVをセルに貼って、TEXTSPLITで即表にする」
という使い方がすごく便利です。


空要素の扱い:区切りが連続するとき

空白を無視したい/空白も残したい

A2 に次のような文字列があるとします。

東京,,名古屋,,

カンマが連続している部分(東京,,名古屋)には「空要素」が含まれています。

空要素を無視したい場合(= 非表示にしたい):

=TEXTSPLIT(A2, ",", , TRUE)

「無視する空文字」に TRUE を指定。
結果は「東京」「名古屋」だけになります。

空要素もちゃんとセルとして残したい場合:

=TEXTSPLIT(A2, ",", , FALSE)

この場合、空のセルも含めて

東京/空/名古屋/空/空

という形で展開されます。


パディング:行ごとに分割した列数を揃える

行によって区切り数が違うときに足りない部分を埋める

A2 にこんなテキストがあるとします。

東京,大阪,名古屋
福岡,札幌

1 行目は 3 要素、2 行目は 2 要素です。
これを表にすると、2 行目の右端 1 列分が足りません。

そこで「パディング」に埋め草の値を入れます(通常は “”)。

=TEXTSPLIT(A2, ",", CHAR(10), , "")

これで、足りない部分は空文字で埋められ、
列数がきれいに揃った表になります。


TEXTSPLIT と他関数の組み合わせイメージ

TEXTSPLIT で分割 → INDEX/CHOOSEROWS で拾う

TEXTSPLIT の結果は「配列」なので、
特定の要素だけを取りたいときは INDEX などと組み合わせます。

例えば、A2 の「東京,大阪,名古屋」を TEXTSPLIT したうち、
2番目(「大阪」)だけ取りたい場合。

=INDEX(TEXTSPLIT(A2, ","), 2)

TEXTSPLIT を中間セルに出さず、その場で使い捨てにするイメージです。
少し応用編ですが、「分割+拾う」でかなり柔軟に扱えます。


例題

問題1

A2 に「東京,大阪,名古屋,福岡」という文字列が入っています。
これをカンマ区切りで右方向に分割して表示する TEXTSPLIT の式を書いてください。

=TEXTSPLIT(A2, ",")

問題2

A2 に、改行区切りで 4 行ぶんの都市名が入っています(東京↵大阪↵名古屋↵福岡)。
これを縦方向(行方向)に分割して表示する TEXTSPLIT の式を書いてください。
(改行には CHAR(10) を使います)

=TEXTSPLIT(A2, , CHAR(10))

問題3

A2 に次のようなテキストが入っています。

東京,大阪,名古屋
福岡,札幌,仙台

これをそのまま 2 行×3 列の表に分割する TEXTSPLIT の式を書いてください。

=TEXTSPLIT(A2, ",", CHAR(10))

問題4

A2 に「東京,,名古屋,,」という文字列が入っています。
連続するカンマによる“空要素”を無視して、「東京」「名古屋」だけが並ぶように分割する TEXTSPLIT の式を書いてください。

=TEXTSPLIT(A2, ",", , TRUE)

問題5

A2 に「東京,大阪,名古屋」という文字列が入っています。
この文字列を TEXTSPLIT で分割した結果の「2番目の要素(大阪)」だけを取り出したいです。
TEXTSPLIT と INDEX を組み合わせた式を書いてください。

=INDEX(TEXTSPLIT(A2, ","), 2)

TEXTSPLIT の本質は、このシンプルな発想です。

=TEXTSPLIT(文字列, "列の区切り文字", "行の区切り文字")

ここに「空要素をどうするか」「足りないところをどう埋めるか」を足していくだけで、
手作業でやっていた「テキストを列に分割」「CSVの貼り付け」「1セルに詰め込まれた情報の展開」が、
一瞬で、しかも再計算可能な“設計された処理”に変わります。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました