Excelのカンマ区切りを縦に並べる・分割する|TEXTSPLIT

Excelでカンマ区切りを縦に並べる TEXTSPLIT 無料サンプル付き

Excelでカンマ区切りの文字列を分割するには、TEXTSPLIT関数を使います。横に並べるなら =TEXTSPLIT(A2,",")、縦に並べるなら第2引数を空けて =TEXTSPLIT(A2,,",") と入力します。結果は隣のセルへ自動で広がる(スピルする)ので、数式のコピーは不要です。

目次

カンマ区切りを縦・横に分割する式と、練習用Excelファイル(無料)

練習用Excelファイル(無料ダウンロード)
・応用:「,」と「、」の混在/複数セルを縦に・空の項目・旧Excel:空の項目を飛ばす/旧Excel向けの式
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

TEXTSPLITは区切り文字の位置で縦にも横にも分けられる

TEXTSPLIT関数は、1つのセルの文字列を区切り文字で分割し、複数のセルに並べる関数です。区切り文字を第2引数(列の区切り)に書くと横方向に、第3引数(行の区切り)に書くと縦方向に並びます。

TEXTSPLIT関数の書式
数式=TEXTSPLIT(文字列, 列の区切り, [行の区切り])
ひとことで区切り文字を2番目に書けば横、3番目に書けば縦に並ぶ
文字列
分割したい文字列。ふつうはA2のようにセルを指定します
列の区切り
ここに書いた文字で区切ると、結果が横(右方向)に並びます
[行の区切り]
ここに書いた文字で区切ると、結果が縦(下方向)に並びます。[ ] は省略できるという意味です
補足4番目以降の引数(空の項目を無視する など)もありますが、カンマ区切りを分けるだけなら省略してかまいません

縦に並べたいときは、第2引数を何も書かずにカンマだけ打って空けておくのがポイントです。=TEXTSPLIT(A2,",") と =TEXTSPLIT(A2,,",") の違いは、カンマが1つ多いかどうかだけです。

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各手順の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

手順1:カンマ区切りを横に分割する

サンプルのA2には「りんご,みかん,ぶどう」が入っています。B4に次の式を入力してEnterを押します。

B4に入力(横に分割)
数式=TEXTSPLIT(A2,",")
ひとことでA2の文字をカンマで区切って、右へ並べる
A2
分割する文字列「りんご,みかん,ぶどう」が入ったセル
","
2番目(列の区切り)にカンマを指定 → 区切った結果が横に並びます。文字は " " で囲みます
データの流れ
① A2の文字
A2りんご,みかん,ぶどう
▼
② 「,」の位置で切る → 3つに分かれる
A2りんご,みかん,ぶどう
▼
③ 列の区切りなので、右へ並ぶ結果
B4りんごC4みかんD4ぶどう

B4に「りんご」、C4に「みかん」、D4に「ぶどう」が表示されます。式を入れたのはB4だけで、C4・D4は自動で埋まります。

手順2:カンマ区切りを縦に並べる(縦に変換する)

縦に並べるときは、B6に次の式を入力します。第2引数を空けて、カンマを第3引数に書きます。

B6に入力(縦に並べる)
数式=TEXTSPLIT(A2,,",")
ひとことで2番目を空けて、3番目にカンマを書く → 下へ並ぶ
A2
分割する文字列が入ったセル
(空欄)
2番目(列の区切り)は何も書かない。カンマだけ打って飛ばすので「,,」と2つ続きます
","
3番目(行の区切り)にカンマを指定 → 区切った結果が縦に並びます
データの流れ
① A2の文字
A2りんご,みかん,ぶどう
▼
② 「,」の位置で切る → 3つに分かれる
A2りんご,みかん,ぶどう
▼
③ 行の区切りなので、下へ並ぶ結果
B6りんごB7みかんB8ぶどう

B6・B7・B8に「りんご」「みかん」「ぶどう」が縦に並びます。名簿や品目リストを1列にまとめたいときはこちらを使います。

練習用Excelファイル(無料ダウンロード)
読むより、手を動かすほうが早く覚えられます。サンプルの「まず試す」シートでA2を「りんご,みかん,ぶどう,もも」に書き換え、横はE4まで、縦はB9まで結果が1つずつ伸びるか確かめてみてください。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

2番目の項目だけを取り出す

分割した結果のうち特定の位置だけが必要なら、INDEX関数で番号を指定します。サンプルのB10では2番目の「みかん」を取り出しています。

B10に入力(2番目だけ取り出す)
数式=INDEX(TEXTSPLIT(A2,","),2)
ひとことでいったん横に分割して、その中の2番目だけを取り出す
TEXTSPLIT(A2,",")
まずA2を横に分割 → 「りんご|みかん|ぶどう」の3つになる
INDEX( … ,2)
分割した結果の左から2番目を返す。2を1にすれば「りんご」、3にすれば「ぶどう」
データの流れ
① TEXTSPLITで横に分割(上の数字が左からの番号)
1番目りんご2番目みかん3番目ぶどう
▼
② INDEXで2番目を選ぶ(4以上を指定すると項目がないため #REF! エラー)
2番目みかん
▼
③ B10に表示結果
B10みかん

2を3に変えれば3番目の「ぶどう」になります。項目数より大きい番号を指定すると #REF! エラーになります。

区切りが「、」と混在・スペースがあるときは

「りんご, みかん、ぶどう」のように、カンマと読点が混ざっていたり、カンマの後ろにスペースが入っていたりするデータもよくあります。区切り文字は {",","、"} のように複数指定でき、TRIM関数で前後のスペースを取り除けます。

「応用」シートのB2に入力
数式=TRIM(TEXTSPLIT(A2,{",","、"}))
ひとことで「,」でも「、」でも区切り、余分なスペースを消す
A2
「りんご, みかん、ぶどう」(カンマと読点が混在し、スペースもある)
{",","、"}
区切り文字を { } でまとめて複数指定。「,」と「、」のどちらが来ても区切ります
TRIM( … )
分割した結果「 みかん」の先頭のスペースを削除して「みかん」にします
データの流れ
① A2の文字(カンマの後ろに空白がある)
A2りんご,空白みかん、ぶどう
▼
② 「,」と「、」の両方で切る → 「みかん」の先頭に空白が残る
りんご空白みかんぶどう
▼
③ TRIMで前後の空白を削除結果
B2りんごC2みかんD2ぶどう

サンプルの「応用」シートB2で結果を確認できます。TRIMを付けないと「 みかん」のように先頭にスペースが残り、検索や重複チェックで一致しなくなります。スペースの扱いは空白(スペース)を削除する方法でも詳しく解説しています。

連続するカンマ(空の項目)を飛ばすには

「A001,,A003」のようにカンマが続いて途中の項目が空になっていると、TEXTSPLITはその空の項目も1つのセルとして返します。空の項目を飛ばしたいときは、第4引数をTRUEにします。サンプルの「空の項目・旧Excel」シートB2で試せます。

「空の項目・旧Excel」シートのB2に入力
数式=TEXTSPLIT(A2,,",",TRUE)
ひとことで第4引数をTRUEにすると、カンマが続いてできた空の項目を飛ばす
A2
「A001,,A003」のように、途中の項目が空になっている文字列
","
3番目(行の区切り)にカンマ → 縦に並びます
TRUE
4番目の引数。TRUEで空の項目を無視します。省略またはFALSEなら空のセルも1つ分として残ります
データの流れ
① A2の文字
A2A001,,A003
▼
② 「,」で切ると、真ん中が空の項目になる
A001(空)A003
▼
③ TRUEなので空を飛ばして、下へ並ぶ結果
B2A001B3A003

ただし、項目の位置に意味があるデータ(3番目は必ず電話番号、など)で空の項目を飛ばすと、位置がずれてしまいます。その場合は第4引数を省略するかFALSEにします。また、全角の「,」は半角の「,」とは別の文字なので、元データの区切りに合わせて指定してください。セル内改行で区切られたデータを縦に分けるなら、区切り文字に CHAR(10) を指定します。

複数のセルをまとめて1列に並べる

TEXTSPLITの第1引数にA5:A7のような範囲を指定しても、各セルの結果を1列につなげることはできません。いったんTEXTJOIN関数で1つの文字列に結合してから分割します。

「応用」シートのC5に入力
数式=TEXTSPLIT(TEXTJOIN(",",TRUE,A5:A7),,",")
ひとことで3つのセルをいったん1つにつないでから、縦に分割する
TEXTJOIN(",",TRUE,A5:A7)
A5〜A7をカンマでつなぎ、1つの文字列「りんご,みかん,ぶどう,もも,なし」にします。TRUE は空白セルを飛ばす指定
(空欄)
2番目(列の区切り)は空ける
","
3番目(行の区切り)にカンマ → 5つの品目が縦に並びます
データの流れ
① A5〜A7の文字(セルごとに個数がバラバラ)
A5りんご,みかんA6ぶどうA7もも,なし
▼
② TEXTJOINで1つにつなぐ(緑の「,」がつなぐときに足されたカンマ)
りんご,みかん,ぶどう,もも,なし
▼
③ すべての「,」の位置で切って、下へ並べる結果
C5りんごC6みかんC7ぶどうC8ももC9なし

A5「りんご,みかん」、A6「ぶどう」、A7「もも,なし」から、C5:C9に5つの品目が縦に並びます。TEXTJOINの第2引数をTRUEにすると空白セルを無視します。なお、結合した文字列が32,767文字を超えると #VALUE! エラーになります。結合の詳細はセル範囲の文字列をまとめて結合する方法をご覧ください。

#SPILL! エラーになったときの確認ポイント

結果が広がる先のセルに文字や数式が入っていると、#SPILL! エラーになります。横なら右側、縦なら下側のセルを空けてください。結合セルやテーブルの中でも広がりません。原因の見つけ方は#SPILL!(スピル)エラーを直す方法で解説しています。なお、CSVデータで「”東京,大阪”」のように引用符の中にカンマがある場合、TEXTSPLITはそのカンマでも分割してしまいます。その場合は「データ」タブの「テキストまたはCSVから」で取り込んでください。

TEXTSPLITが使えない場合(Excel 2021以前)

Excel 2021以前ではTEXTSPLIT関数がなく、入力すると #NAME? エラーになります。その場合は、数式を下へコピーして縦に並べる方法か、「データ」タブの「区切り位置」を使います。

数式で縦に並べる(下へコピー)

短い品目の一覧などなら、次の式で1つずつ取り出せます。サンプルの「空の項目・旧Excel」シートでは、A7の文字列をB7〜B9に縦に並べています。B7に入力して、下へコピーしてください。

「空の項目・旧Excel」シートのB7に入力して、下へコピー
数式=TRIM(MID(SUBSTITUTE($A$7,",",REPT(" ",100)),ROW(A1)*100-99,100))
ひとことでカンマを100個の空白に置き換え、100文字ずつ切り出して、余分な空白を取る
SUBSTITUTE($A$7,",",REPT(" ",100))
A7のカンマを、半角スペース100個に置き換えます。$を付けて、下へコピーしてもA7を見続けるようにします
ROW(A1)*100-99
切り出し始める位置。B7ではROW(A1)が1なので1文字目、B8ではROW(A2)が2なので101文字目…と、100文字ずつずれます
TRIM( … )
切り出した100文字に含まれる余分な空白を取り除き、品目だけを残します
データの流れ
① A7の文字
A7りんご,みかん,ぶどう
▼
② カンマを空白100個に置き換えて、100文字ずつに分ける
1〜100字りんご+空白101〜200字みかん+空白201〜300字ぶどう+空白
▼
③ TRIMで空白を取り、下へコピーした3つのセルに並ぶ結果
B7りんごB8みかんB9ぶどう

この方法は、1つの項目が100文字を超える長いデータや、項目の中の空白を残したいデータには向きません。データが多い場合は、次の「区切り位置」やPower Queryを使うほうが確実です。

「区切り位置」で横に分ける

関数を使わずに分ける場合の手順です。

  1. 分割したいセル(A2など)を選択します。
  2. 「データ」タブ →「区切り位置」をクリックします。
  3. 「カンマやタブなどの区切り文字によって…」を選び、「次へ」を押します。
  4. 区切り文字の「カンマ」にチェックを入れ、「完了」を押します。

区切り位置は横方向にしか分割できず、元のデータを書き換えても結果は更新されません。縦に並べたい場合は、分割後の範囲をコピーし、「形式を選択して貼り付け」→「行列を入れ替える」で縦にします。

練習用Excelファイル(無料ダウンロード)
この記事の数式は、すべて練習用ファイルに入っています。自分のデータに使う前に、サンプルで動きを確かめておくと安心です。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

TEXTSPLITでカンマ区切りを分割する式のまとめ

やりたいこと数式
横に分割=TEXTSPLIT(A2,",")
縦に並べる=TEXTSPLIT(A2,,",")
2番目だけ取り出す=INDEX(TEXTSPLIT(A2,","),2)
「,」と「、」が混在=TRIM(TEXTSPLIT(A2,{",","、"}))
空の項目を飛ばす=TEXTSPLIT(A2,,",",TRUE)
旧Excelで縦に(下へコピー)=TRIM(MID(SUBSTITUTE($A$7,",",REPT(" ",100)),ROW(A1)*100-99,100))
複数セルを1列に=TEXTSPLIT(TEXTJOIN(",",TRUE,A5:A7),,",")

文字列の一部だけを取り出したい場合は特定の文字より後ろを抽出する方法や特定の文字から特定の文字までを抽出する方法、スピルする関数をまとめて知りたい場合は動的配列・スピル関数まとめも参考にしてください。関数の仕様はMicrosoftのTEXTSPLIT関数の説明でも確認できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次