はじめに|1つのセルに入った文字列を、区切り文字で一気に分けられる
「山田,太郎,営業部」のように、カンマやスペースでつながった文字列が1つのセルに入っていて、項目ごとに別のセルへ分けたい。CSVを取り込んだときや、ほかのシステムから貼り付けたデータではよくある場面です。
結論から言うと、TEXTSPLIT関数は =TEXTSPLIT(文字列, 区切り文字) と書くだけで、文字列を指定した区切り文字の位置で分割し、結果を隣のセルへ自動で並べてくれる関数です。
メニューの[データ]タブにある「区切り位置」機能でも同じ分割はできますが、あちらは一回限りの操作です。TEXTSPLITは数式なので、元の文字列が変われば分割結果も自動で更新されます。定期的に取り込むデータの整形では、こちらのほうが手間がかかりません。
この記事の対象:Microsoft 365版Excel、Excel 2024、Excel for the web。Excel 2021以前のバージョンには TEXTSPLIT関数自体がないため、その場合は本文末尾の代替方法を参照してください。
TEXTSPLIT関数の書式と引数
=TEXTSPLIT(テキスト, 列区切り文字, [行区切り文字], [空を無視], [一致モード], [補う値])
必須の引数は最初の2つだけです。残りは必要なときだけ指定します。
- テキスト(必須): 分割したい文字列、または文字列が入ったセル
- 列区切り文字(必須): 横方向(列方向)へ分ける区切り文字。例: “,” や ” “
- 行区切り文字(任意): 縦方向(行方向)へ分ける区切り文字
- 空を無視(任意): TRUEにすると、区切り文字が連続してできる空の要素を飛ばす。既定は FALSE
- 一致モード(任意): 区切り文字の大文字・小文字の区別。0=区別する(既定)、1=区別しない
- 補う値(任意): 行ごとに要素数がそろわないとき、足りない部分を埋める値。既定は #N/A エラー
結果は、数式を入力したセルから右方向(列区切り)や下方向(行区切り)へ自動で広がります。この仕組みは「スピル」と呼ばれ、結果が広がる先のセルに何か入力されていると #SPILL! エラーになるので、右側と下側は空けておいてください。
基本例1|カンマで横に分ける
A2セルに「りんご,みかん,ぶどう」と入っているとき、B2セルに次の数式を入力します。
=TEXTSPLIT(A2,”,”)
結果: B2=りんご、C2=みかん、D2=ぶどう。数式を入力するのはB2セルの1か所だけです。C2とD2はスピルで自動的に埋まります。元のA2を変更すれば、B2以降の結果もその場で変わります。
基本例2|スペースで氏名を姓と名に分ける
A2セルに「山田 太郎」と入っているとき、区切り文字に半角スペースを指定します。
=TEXTSPLIT(A2,” “)
結果: B2=山田、C2=太郎。氏名の区切りが全角スペースのデータでは、区切り文字も全角の「 」に変えてください。半角と全角は別の文字として扱われるため、ここが合っていないと分割されません。
基本例3|縦に分ける(行区切り文字)
結果を横ではなく縦に並べたいときは、第3引数の「行区切り文字」を使います。第2引数の列区切り文字は使わないので、空のままカンマだけを続けて書くのがポイントです。
A2セルに「東京;大阪;名古屋」と入っているとき:
=TEXTSPLIT(A2,,”;”)
結果: B2=東京、B3=大阪、B4=名古屋。
複数の区切り文字で分ける
データによってカンマだったり読点だったりと、区切り文字が混在していることがあります。そんなときは、区切り文字を { } で囲んだ配列の形で複数指定できます。
=TEXTSPLIT(A2,{“,”,”、”})
この数式では、カンマと読点のどちらが現れても、そこで分割されます。
区切り文字が連続したときの空セルを無視する
「りんご,,ぶどう」のように区切り文字が2つ続くと、その間は空の要素として扱われ、結果にも空のセルができます。空の要素が不要な場合は、第4引数に TRUE を指定します。
=TEXTSPLIT(A2,”,”,,TRUE)
結果は「りんご / ぶどう」の2セルになります。貼り付けたデータで区切りの数がそろっていないときは、まず TRUE を試すと結果がすっきりします。ただし、空欄そのものに意味があるデータ(欠測を表す場合など)では、FALSEのままにしてください。
行と列の両方で分けて、表の形にする
列区切り文字と行区切り文字を両方指定すると、文字列を一度に表の形へ分割できます。たとえば改行を行の区切りにして、各行をカンマで分ける、といった使い方です。
行ごとに項目数が違うと、足りない部分は既定で #N/A エラーで埋められます。見た目を空白にしたいときは、第6引数の「補う値」に “” を指定します。
=TEXTSPLIT(A2,”,”,CHAR(10),,,””)
ポイント:第2引数 “,” が列の区切り、第3引数 CHAR(10) が改行(行の区切り)です。最後の “” が補う値で、項目が足りないセルを #N/A ではなく空白にします。
応用|分けた結果の一部だけを取り出す
全部を並べる必要はなく、「2番目だけ」がほしいこともあります。その場合は TEXTSPLIT の結果を INDEX関数で囲みます。
=INDEX(TEXTSPLIT(A2,”,”),2)
A2が「りんご,みかん,ぶどう」なら、この数式は「みかん」だけを返します。
「区切り位置」や他の関数との違い
- TEXTSPLIT関数: 元データの変更に合わせて結果も更新したいとき。Microsoft 365 / Excel 2024 / Web版のみ
- 区切り位置(データタブ): 一度だけ分ければよい、古いExcelでも使いたいとき。元データを直しても結果は自動更新されない
- TEXTBEFORE / TEXTAFTER: 区切り文字の前、または後だけを取り出したいとき。3つ以上に分ける用途には向かない
- TEXTJOIN関数: 逆に、複数セルの文字列を区切り文字でつなげたいとき。分割ではなく結合のための関数
使えない・うまくいかないときの確認ポイント
- #NAME? になる:関数名を入力しても候補に出てこない、または #NAME? エラーになる場合は、Excelのバージョンが古い可能性があります。TEXTSPLITは Microsoft 365版、Excel 2024、Excel for the web で使える関数で、Excel 2021以前には含まれていません。その場合は[データ]タブの「区切り位置」を使ってください。
- #SPILL! になる:結果が広がる先のセルに値や数式が残っていると表示されます。数式を入れたセルの右側・下側を空けてから入れ直してください。
- 分割されない:半角と全角の違い(カンマ、スペース、コロンなど)が原因のことが多いです。元の文字列をコピーして区切り文字をそのまま貼り付けると確実です。
- 分けたら計算できなくなった:日付や数値が混ざった文字列を分けると、分けられた部分は文字列として返ります。計算に使う場合は VALUE関数で数値に戻してください。
まとめ
まずは =TEXTSPLIT(セル,”,”) の形を覚えれば、カンマ区切りの分割という最も多い用途はカバーできます。
縦に並べたいときは行区切り文字、区切り文字が複数あるときは { } の配列、空の要素を飛ばしたいときは第4引数の TRUE、というように、必要な引数を少しずつ足していくのが TEXTSPLIT の使い方です。
元データが更新される表では「区切り位置」よりも再作業が少なくて済むので、Microsoft 365や Excel 2024 を使っているなら、文字列の分割は TEXTSPLIT に置き換えていくのがおすすめです。






コメント