要点 —
TEXTSPLITは数式版の**「区切り位置」ですが、大きな違いが1つ。結果が 生きた配列で、元が変われば再分割されます。構文は=TEXTSPLIT(テキスト, 列区切り, [行区切り], [空白を無視], [一致モード], [埋める値])。 第2引数は横方向=列へ、第3引数は下方向=行へ分割し、両方を渡すと1つの文字列が 格子になります。つまずきは2つ。結果が**スピルするので、ふさがっていると#SPILL!。 そして複数の区切りには 配列定数{",", ";"}が必要で、文字列",;"ではダメ。 Excel 365 / 2021 以降。
=TEXTSPLIT(A2, ",")
=TEXTSPLIT(A2, ",", ";") ' カンマで列、セミコロンで行
20年来、"佐藤, さくら, 経理" を別々のセルに分けるには**「区切り位置」**ウィザード——
一度きりの破壊的な貼り付けで、変わるたびに手で再実行——か、1か月後には誰も読めない
LEFT・MID・FIND の入れ子が要りました。TEXTSPLIT は1つの式でこれを行い、式
だからこそ分割は生き続けます。
この記事でわかること
列区切りと行区切りがどう1つの文字列を2次元の格子に変えるか- なぜ複数の区切りは配列定数
{",", ";"}が必要で、",;"ではダメなのか #SPILL!の原因と直し方埋める値(pad_with)——でこぼこな行を#N/Aにしない引数TEXTSPLITがLEFT/MID/FINDの山と「区切り位置」を引退させる場面
考え方の軸:「区切り位置」、ただし生きている
「区切り位置」は操作です——実行すると値を一度書いて終わり。元が変わると出力は古く
なります。TEXTSPLIT は数式です——分割を記述し、ずっと再計算します。「範囲を選んで
ウィザードを開いて区切りを選んで完了を押して、来週また」ではなく、式を1つ打てば右
(と下)のセルが自分で埋まり、正しいままです。
' A2 の "佐藤,さくら,経理" が3つのセルにスピル:
=TEXTSPLIT(A2, ",") ' -> 佐藤 | さくら | 経理
出力はそれらのセルに打ち込まれるのではなく、式のセルからスピルします——
FILTER などの動的配列関数とまったく同じです。
すべての鍵となるルール:列か行か、そして区切りの配列
TEXTSPLIT には区切りの枠が2つあり、どちらを使うかで出力の形が決まります。列区切り
(第2引数)はテキストを横に分けて列に、行区切り(第3引数)は下に分けて行にし
ます。両方を渡すと、詰め込まれた1つの文字列が長方形の格子になります。
' "a,b;c,d" -> 2x2 の格子:カンマが列、セミコロンが行
=TEXTSPLIT(A2, ",", ";")
そして最も時間を食う罠。2つ以上の区切りには、長い文字列ではなく配列定数を
渡します。",;" は「カンマのあとセミコロン」という2文字の単一区切りと読まれ——決して
一致しないため——文字列全体が1セルに落ちます。正しくは:
=TEXTSPLIT(A2, {",", ";", " "}) ' カンマ または セミコロン または 空白で分割
=TEXTSPLIT(A2, ",;") ' 誤り:リテラル文字列 ",;" を探してしまう
#SPILL! は数式ではなく「隣人」の問題
結果はテキストの数だけ広がるので、TEXTSPLIT はスピル先に空セルが必要です。結果が
占めたい範囲に値・ラベル・結合セルがあると、Excel は配置できず #SPILL! を返します。
式は正しく、ふさがっているのは置き場所です。セルをクリックすると枠でスピル範囲が
示されるので、そこを空ければ結果が現れます。実用のコツ——TEXTSPLIT は右と下に伸び
られる場所に置く。既存データの列の隣には置かない。
埋める値:でこぼこな行への対処
ピース数がそろわない多くの行を分割すると——ある住所には建物名の行があり、別の住所には
無い——短い行は #N/A で埋められて返ります。最後の引数 埋める値 が、それを好きな値
に置き換えます。
=TEXTSPLIT(A2, ",", ";", , , "") ' 足りないセルを #N/A ではなく "" で埋める
飛ばした2つの引数は 空白を無視(連続する区切りをまとめる)と 一致モード(1 で
大文字小文字を無視)です。めったに触りませんが、枠の順番を知っておくとカンマがずれま
せん。
判断:TEXTSPLIT が旧来の道具に取って代わるとき
文字列を区切りで切るためだけに LEFT/MID/RIGHT を FIND と入れ子にしているなら、
やめましょう——脆いパターンで、TEXTSPLIT なら一発、しかも生きたまま。変わるデータに
データ ▸ 区切り位置を使っているなら、永遠に再実行する約束をしているのと同じ。
TEXTSPLIT の式は自分で更新します。正直な例外は動的配列関数すべてと同じ——数十万行の
一度きりの取り込みは Power Query の方が軽い。最新であり続けてほしいものはすべて
TEXTSPLIT の勝ちです。(分割は結合の逆——
TEXTJOIN を参照。)
ExcelMaster の使いどころ
実務の分割はめったにきれいではありません:フルネームを姓と名に分けて。ただし最初の
空白だけで。住所の残りはまとめたまま。ExcelMaster は、正しい区切りの配列・
埋める値・明確なスピル位置つきで TEXTSPLIT を日本語の指示から書き、出力先が衝突
しないかも教えます。欲しい形はあなたが説明し、区切りの機構は任せられます。
よくある質問
数式でテキストを列に分割するには?
=TEXTSPLIT(A2, ",") でカンマにより横(列)へ分割します。結果は式の右のセルにスピル
し、A2 が変わると更新されます——ウィザードも再実行も不要です。
TEXTSPLITで複数の区切り文字を使うには?
中かっこの配列定数で渡します:=TEXTSPLIT(A2, {",", ";", " "})。",; " を文字列で
渡すと失敗します。Excel が3つの別々ではなく、1つの複数文字の区切りとして扱うためです。
TEXTSPLITで#SPILL!が出るのはなぜ?
結果が広がるべきセルを、値・ラベル・結合セルがふさいでいます。式のセルをクリックして スピル範囲を確認し、そこを空ければ結果が現れます。
TEXTSPLITと「区切り位置」はどちらを使う?
TEXTSPLIT は元が変わると再分割する生きた数式。「区切り位置」は静的な値を書く一度
きりの操作で、手で再実行が必要です。変わるデータには TEXTSPLIT。一度きりの一括取り
込みなら「区切り位置」か Power Query で十分です。
TEXTSPLITはExcel 2016や2019で使える?
使えません。TEXTSPLIT は Excel 365 / 2021 以降が必要です。旧版では「区切り位置」か
LEFT/MID/FIND の数式を使います。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-06-17。
関連ガイド: ExcelのTEXTJOIN関数 · ExcelのCONCAT関数 · ExcelのFILTER関数 · VBAのSplit
