Excelでカンマ区切りの文字列を分割するには、TEXTSPLIT関数を使います。横に並べるなら =TEXTSPLIT(A2,",")、縦に並べるなら第2引数を空けて =TEXTSPLIT(A2,,",") と入力します。結果は隣のセルへ自動で広がる(スピルする)ので、数式のコピーは不要です。
カンマ区切りを縦・横に分割する式と、練習用Excelファイル(無料)
TEXTSPLITは区切り文字の位置で縦にも横にも分けられる
TEXTSPLIT関数は、1つのセルの文字列を区切り文字で分割し、複数のセルに並べる関数です。区切り文字を第2引数(列の区切り)に書くと横方向に、第3引数(行の区切り)に書くと縦方向に並びます。

画像をタップすると拡大
縦に並べたいときは、第2引数を何も書かずにカンマだけ打って空けておくのがポイントです。=TEXTSPLIT(A2,",") と =TEXTSPLIT(A2,,",") の違いは、カンマが1つ多いかどうかだけです。
まず動かしてみよう|この記事のサンプルをその場で試せます
練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各手順の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。
手順1:カンマ区切りを横に分割する
サンプルのA2には「りんご,みかん,ぶどう」が入っています。B4に次の式を入力してEnterを押します。
B4に「りんご」、C4に「みかん」、D4に「ぶどう」が表示されます。式を入れたのはB4だけで、C4・D4は自動で埋まります。
手順2:カンマ区切りを縦に並べる(縦に変換する)
縦に並べるときは、B6に次の式を入力します。第2引数を空けて、カンマを第3引数に書きます。
B6・B7・B8に「りんご」「みかん」「ぶどう」が縦に並びます。名簿や品目リストを1列にまとめたいときはこちらを使います。

画像をタップすると拡大
2番目の項目だけを取り出す
分割した結果のうち特定の位置だけが必要なら、INDEX関数で番号を指定します。サンプルのB10では2番目の「みかん」を取り出しています。
2を3に変えれば3番目の「ぶどう」になります。項目数より大きい番号を指定すると #REF! エラーになります。
区切りが「、」と混在・スペースがあるときは
「りんご, みかん、ぶどう」のように、カンマと読点が混ざっていたり、カンマの後ろにスペースが入っていたりするデータもよくあります。区切り文字は {",","、"} のように複数指定でき、TRIM関数で前後のスペースを取り除けます。
サンプルの「応用」シートB2で結果を確認できます。TRIMを付けないと「 みかん」のように先頭にスペースが残り、検索や重複チェックで一致しなくなります。スペースの扱いは空白(スペース)を削除する方法でも詳しく解説しています。
連続するカンマ(空の項目)を飛ばすには
「A001,,A003」のようにカンマが続いて途中の項目が空になっていると、TEXTSPLITはその空の項目も1つのセルとして返します。空の項目を飛ばしたいときは、第4引数をTRUEにします。サンプルの「空の項目・旧Excel」シートB2で試せます。
ただし、項目の位置に意味があるデータ(3番目は必ず電話番号、など)で空の項目を飛ばすと、位置がずれてしまいます。その場合は第4引数を省略するかFALSEにします。また、全角の「,」は半角の「,」とは別の文字なので、元データの区切りに合わせて指定してください。セル内改行で区切られたデータを縦に分けるなら、区切り文字に CHAR(10) を指定します。
▶ この式(「空の項目・旧Excel」シートB2)を、上の練習ツールで試す
複数のセルをまとめて1列に並べる
TEXTSPLITの第1引数にA5:A7のような範囲を指定しても、各セルの結果を1列につなげることはできません。いったんTEXTJOIN関数で1つの文字列に結合してから分割します。
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に入力して、下へコピーしてください。
この方法は、1つの項目が100文字を超える長いデータや、項目の中の空白を残したいデータには向きません。データが多い場合は、次の「区切り位置」やPower Queryを使うほうが確実です。
「区切り位置」で横に分ける
関数を使わずに分ける場合の手順です。
- 分割したいセル(A2など)を選択します。
- 「データ」タブ →「区切り位置」をクリックします。
- 「カンマやタブなどの区切り文字によって…」を選び、「次へ」を押します。
- 区切り文字の「カンマ」にチェックを入れ、「完了」を押します。
区切り位置は横方向にしか分割できず、元のデータを書き換えても結果は更新されません。縦に並べたい場合は、分割後の範囲をコピーし、「形式を選択して貼り付け」→「行列を入れ替える」で縦にします。
▶ 旧Excel向けの式(「空の項目・旧Excel」シートB7)を、上の練習ツールで試す
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関数の説明でも確認できます。

コメント