SPLIT関数の使い方・読み方|1つのセルを区切り文字で分割する

執筆者:

カテゴリ:

SPLIT関数の使い方・読み方のイメージ

文字列

SPLIT関数の使い方・読み方

Excel関数辞典

読み方:SPLIT は「スプリット」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)

SPLITは、1つのセルの文字列を、区切り文字で複数のセルに分割する関数です。

使える環境Excel✕Googleスプレッドシート○

Excelでは TEXTSPLIT(365)か、区切り位置ウィザードを使います。

このページの中身(24項目)
  1. 書式
  2. 基本の使い方
  3. 第3引数の落とし穴
  4. 連続した区切りの扱い
  5. 特定の位置だけ取り出す
  6. 全行に適用する
  7. 縦に並べたい
  8. 実用例
  9. エラーの対処
  10. 展開される方向と場所を先に確保する
  11. 区切り文字の指定でつまずくところ
  12. 取り込んだデータを整形する流れ
  13. 分割の結果を扱うときの注意
  14. 分割した結果を縦に並べる
  15. 取り込みの工程を固定する
  16. 「文字列」の関数を全体から見る
  17. 数式を書く前の手順
  18. どの関数でも共通する確認
  19. 引き継ぐときに残すこと
  20. このサイトの収録状況
  21. よくある質問
  22. この分野の他の記事
  23. まとめ
  24. 関連する関数

この記事の書式と対応環境の出どころ(2026-08-26 確認)

関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。

「東京都新宿区西新宿」を都道府県と市区町村に分ける、カンマ区切りのデータを列に展開する、といった場面で使います。

SPLIT関数の使い方の記事構成図
SPLIT関数の使い方:この記事で扱う内容

Excelにはありません

Excelでは「区切り位置」機能か SPLITの応用(365のみ)を使います。

書式

=SPLIT(文字列, 区切り文字, [各文字で区切るか], [空のセルを削除するか])
引数内容
文字列分割する対象
区切り文字区切りに使う文字
各文字で区切るか省略時 TRUE。区切り文字の1文字ずつで区切る
空のセルを削除するか省略時 TRUE

第3引数の挙動が独特なので、後で詳しく説明します。

基本の使い方

A1に 東京,大阪,名古屋 が入っているとします。

=SPLIT(A1, ",")

結果: 3つのセルに「東京」「大阪」「名古屋」が横方向に展開されます。

結果は右方向に広がります

右隣にデータがあると #REF! になるので、空けておいてください。

SPLIT関数の使い方の要点図
SPLIT関数の使い方

第3引数の落とし穴

区切り文字を複数指定したときの挙動が独特です。

A1に 東京-大阪_名古屋 が入っているとします。

=SPLIT(A1, "-_")

結果: 東京 / 大阪 / 名古屋

"-_" という2文字の並びではなく、「-」と「_」のどちらでも区切るという意味になります。これが第3引数の既定(TRUE)の挙動です。

「-_」という2文字の並びで区切りたいなら、第3引数を FALSE にします。

=SPLIT(A1, "-_", FALSE)

複数文字の区切り(", " や " - " など)を使うときは、必ず FALSE を指定してください。 ここを忘れると、スペースでも区切られてしまいます。

連続した区切りの扱い

A1に 東京,,名古屋 が入っている場合(大阪が欠損)。

=SPLIT(A1, ",")        → 東京 / 名古屋   (2つ)
=SPLIT(A1, ",", TRUE, FALSE)  → 東京 / (空) / 名古屋   (3つ)

第4引数を FALSE にすると、空の要素を保持します。

列の位置を揃えたいときは FALSE が必須です。既定のままだと、欠損がある行だけ列がずれます。CSVを扱うときに必ず問題になる箇所です。

特定の位置だけ取り出す

SPLITの結果から1つだけ欲しいときは、INDEX で包みます。

=INDEX(SPLIT(A1, ","), 1, 2)

「1行目・2番目」=2つ目の要素です。

この形なら結果が1セルに収まるので、右方向に展開されません。表の中で使うときはこちらが便利です。

全行に適用する

SPLITはARRAYFORMULAと相性が悪く、複数行をまとめて分割することはできません。

行ごとに数式を置くか、次のように INDEX と組み合わせて列ごとに書きます。

B2:  =ARRAYFORMULA(IF(A2:A="", "", INDEX(SPLIT(A2:A, ","), 0, 1)))

環境によって挙動が安定しないため、確実にやるなら数式を各行にコピーするか、REGEXEXTRACT を使ってください。

=ARRAYFORMULA(IF(A2:A="", "", REGEXEXTRACT(A2:A, "^([^,]+)")))

正規表現なら ARRAYFORMULA が確実に効きます。

縦に並べたい

SPLITの結果は横に出ます。縦にしたいなら TRANSPOSE で包みます。

=TRANSPOSE(SPLIT(A1, ","))

複数行をまとめて縦一列にするなら FLATTEN を使います。

実用例

氏名を姓と名に分ける

=SPLIT(A1, " ")

全角スペースの場合は " " を指定してください。両方に対応するなら第3引数を TRUE のままにして両方渡します。

=SPLIT(A1, "  ")

半角スペースと全角スペースのどちらでも区切られます。

メールアドレスのドメインを取り出す

=INDEX(SPLIT(A1, "@"), 1, 2)

URLからドメインを取り出す

=INDEX(SPLIT(A1, "/"), 1, 3)

https://example.com/page を / で区切ると、1番目が https:、2番目が空(既定では削除される)、3番目が example.com です。第4引数の扱いで位置が変わるので、実際の結果を確認してください。

エラーの対処

#REF! が出る

結果の展開先にデータが入っています

SPLITは右方向に広がるので、右隣を空けてください。

分割されない

  • 区切り文字が実際のデータと違う(全角カンマ , と半角カンマ ,)
  • 区切り文字がセル内に存在しない

LEN() で文字数を確認するか、SUBSTITUTE で置き換えてから分割すると解決することがあります。

意図しない場所で区切られる

第3引数が既定の TRUE のままで、複数文字の区切りを指定している可能性があります。FALSE にしてください。

列がずれる

第4引数を FALSE にして、空の要素を保持してください。


展開される方向と場所を先に確保する

区切り文字で分割する関数は、結果が横方向に展開されます。要素が三つあれば三つのセルに広がります。この性質を理解していないと、エラーの原因が分かりません。

展開される先に何か入力されていると、衝突してエラーになります。数式を入れる前に、右側を十分に空けておいてください。要素の数が行によって違う場合は、最大の要素数を見込んで空けておく必要があります。

さらに、複数の行に同じ数式を入れる場合、それぞれの行で右方向に展開されます。表として使うなら、分割結果を置く領域全体を空けておくことになります。

見落としやすいのは、目に見えない値が残っている場合です。過去に何か入力して削除したつもりでも、空白文字が残っていることがあります。範囲を選択して完全に消去してから、数式を入れ直してください。

もうひとつ、表の形式に変換されている範囲の中では、展開する数式が使えないことがあります。通常の範囲に戻すか、別の場所に置いてください。


区切り文字の指定でつまずくところ

区切り文字は複数を同時に指定できます。カンマとスラッシュの両方で区切りたい、といった場合に、両方を並べて渡します。

ここで注意が必要なのは、既定の動作では指定した文字が「一文字ずつ」区切りとして扱われることです。「、」と「。」を並べて指定すれば、どちらでも区切られます。一方、「、。」という二文字の並びを区切りとして扱いたい場合は、動作を変える引数が必要です。

もうひとつ、連続した区切り文字の扱いです。「東京,,新宿」のようにカンマが連続している場合、既定では空の要素が生まれずに詰められます。空の要素を残したい場合は、引数で指定を変えます。項目の位置が固定されている形式では、詰められると位置がずれるため、この指定が重要になります。

改行で区切りたい場合は、改行を表す関数を区切り文字として渡します。セル内に複数行が入っているデータを分解するときに使います。

区切り文字が元のデータに含まれる可能性がある場合は注意が必要です。住所にカンマが含まれていれば、そこでも区切られます。この場合は、区切り文字を別のものに変えるか、正規表現を使う方法を検討してください。


取り込んだデータを整形する流れ

外部から取り込んだデータの整形では、分割が最初の工程になることが多くあります。典型的な流れを整理しておきます。

まず、取り込んだ生のデータを別のシートに置きます。ここは触らない領域とします。

次に、整形用の作業シートを用意し、分割の数式を置きます。ここで列に分けます。

分割した結果に対して、空白の除去、全角と半角の統一、型の変換を行います。これも作業列で行います。

最後に、整形済みのデータを集計用のシートで参照します。

この構成にしておくと、取り込みのたびに生データを差し替えるだけで、以降が自動で更新されます。手作業の工程がなくなるので、作業漏れという事故が起きなくなります。

シートが増えることを嫌う場合もありますが、生データと整形後を分けておく利点は大きいものです。整形の途中で間違いが見つかったときも、生データが残っていればやり直せます。


分割の結果を扱うときの注意

分割した結果は、すべて文字列になります。数値に見えても計算には使えません。集計に使う列は、数値に変換する処理を通してください。

要素の数が行によって違う場合、列がずれます。三つの要素がある行と二つの行が混在すると、三列目の意味が行によって変わります。位置で意味が決まる形式では、空の要素を残す指定にしてください。

日付を含む文字列を分割した場合、年月日が別々の文字列になります。日付として扱いたい場合は、年月日から日付を作る関数に渡します。

分割した結果を固定したい場合は、値として貼り付けます。数式のままだと、元データが変われば結果も変わります。ある時点のデータとして保存したいなら、貼り付けが必要です。

なお、この関数はスプレッドシート特有のものです。他の環境では使えないため、ファイルを移す予定があるなら、機能としての区切り位置指定を使うか、位置で切り出す関数の組み合わせで代替することになります。


分割した結果を縦に並べる

この関数の結果は横方向に展開されますが、縦に並べたい場合もあります。

一つのセルに改行区切りで複数の値が入っているデータを、行に分けたいとき。分割してから、行と列を入れ替える関数で包めば、縦一列になります。

複数行のデータをそれぞれ分割して、全部を縦に並べたい場合は、さらに一手間かかります。行ごとに分割すると、それぞれが横に展開されます。これらをまとめて縦一列にするには、複数の範囲を一列にまとめる関数を使います。

やや複雑になりますが、フォームの回答で複数選択された項目を、選択肢ごとの行に展開する、といった処理ができます。集計するには縦に並んでいる必要があるためです。

もう一つの用途として、タグのような複数値を持つ列を分解する処理があります。「東京,大阪,福岡」のような値を、それぞれ独立した行にすれば、地域ごとの集計ができるようになります。

こうした処理は、そもそもデータの持ち方を変えられるなら不要です。一つのセルに複数の値を入れないという原則を守れば、分解の手間は生まれません。受け取るデータが既にその形になっている場合にだけ、変換が必要になります。


取り込みの工程を固定する

外部からデータを受け取る運用では、取り込みの手順を固定しておくと事故が減ります。

第一に、受け取ったファイルはそのまま保存します。加工前の状態を残しておけば、変換に誤りが見つかってもやり直せます。

第二に、貼り付ける場所を決めます。生データ用のシートを用意し、必ずそこに貼ります。場所が毎回変わると、数式の参照がずれます。

第三に、貼り付け方を決めます。値として貼るのか、書式ごと貼るのか。書式が混ざると、後の処理で型の問題が起きます。値として貼るのが基本です。

第四に、件数を確認します。受け取ったファイルの件数と、貼り付けた件数が一致するかを確認する数式を置いておきます。

第五に、整形の結果を確認します。分割した列に想定外の値が入っていないか、空欄が増えていないか。

この五段階を手順として書き出しておけば、誰が作業しても同じ結果になります。属人化を避けられます。

取り込みの作業は単調ですが、ここで混入した誤りは後工程すべてに影響します。手順の固定に手間をかける価値があります。

「文字列」の関数を全体から見る

文字を加工する関数群です。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに31本あります。

記事
CHAR
CLEAN
CODE
CONCAT
CONCATENATE
EXACT
FIND
FIXED
HYPERLINK
IMAGE
JIS
LEFT
LEN
LENB
LOWER
MID
NUMBERVALUE
PROPER
REGEXEXTRACT
REGEXMATCH
REGEXREPLACE
REPLACE
REPT
RIGHT
SEARCH
SUBSTITUTE
TEXT
TEXTJOIN
TRIM
UPPER
VALUE

このカテゴリで共通するつまずき

全角と半角、前後の空白、改行。この3つが原因のほとんどです。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。

どれを使うかの決め方

位置で取るのか、記号を目印に取るのかで使う関数が変わります。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。

迷ったときは

→ 全関数の一覧 に目的別の索引があります。


数式を書く前の手順

先に決めておけば、書くのは数分で終わります。

1. 出したい結果を一文で書く

「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。

2. 元データの型を確認する

全角と半角、前後の空白、改行。この3つが原因のほとんどです。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。

3. 空欄と0の扱いを決める

未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。

4. 条件の数を数える

位置で取るのか、記号を目印に取るのかで使う関数が変わります。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。

5. 共有先の環境を確認する

新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。

6. 1行だけ書いて確認する

全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。


どの関数でも共通する確認

うまくいかないときに見る場所は、ほぼ決まっています。

参照を固定したか

下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。

範囲の行数が揃っているか

複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。

型が揃っているか

=ISNUMBER(A2)

数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。

前後に空白が入っていないか

=LEN(A2)&" / "&LEN(TRIM(A2))

数が違えば、余分な空白が入っています。見た目では判別できません。

別の方法で検算したか

同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。

最終行まで確認したか

一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。


引き継ぐときに残すこと

数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。

何を出している数式か

一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。

どの表を参照しているか

参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。

該当しないときの扱い

空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。

触ってはいけない場所

列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。

使った関数の対応環境

新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。

確定した期間は値にする

締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。

このサイトの収録状況

収録は201本です。カテゴリごとの内訳を出しておきます。

カテゴリ記事数
目的別51本
集計47本
文字列31本 ←この記事
日付19本
検索・参照15本
条件15本
機能12本
配列・抽出10本
関数一覧1本

探し方の順番

関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。

記事の構成

どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。


よくある質問

Q. エラーになって展開されません

展開される先に何か入っています。右方向を空にしてください。

Q. 連続した区切りで空欄が詰められます

引数で指定を変えれば、空の要素を残せます。

Q. 複数の区切り文字を使いたいのですが

並べて指定できます。既定では一文字ずつ区切りとして扱われます。

Q. 二文字の並びを区切りにしたいのですが

動作を変える引数があります。既定のままでは一文字ずつになります。

Q. 縦方向に分割できますか

この関数は横方向に展開します。縦にしたい場合は、行と列を入れ替える関数で包んでください。

Q. 結果を数値として扱いたいのですが

数値に変換する関数を通してください。分割の結果は文字列です。

Q. Excelでも使えますか

スプレッドシート特有の関数です。他の環境では、機能としての区切り位置指定か、位置で切り出す関数を使ってください。

Q. 逆に連結したいのですが

区切り文字を指定して連結する関数があります。→ TEXTJOIN関数の使い方




この分野の他の記事

同じ「文字列」の記事です。目的が近いので、こちらで解決しない場合はこちらも見てください。

まとめ

  • 書式は =SPLIT(文字列, 区切り文字)。結果は右方向に展開
  • 複数文字の区切りを使うなら第3引数を FALSE
  • 列の位置を揃えたいなら第4引数を FALSE
  • 1つだけ取り出すなら INDEX(SPLIT(...), 1, n)
  • 全行に適用するなら REGEXEXTRACT のほうが確実
  • Excelには無い(「区切り位置」機能か SPLITの応用)

関連する関数