文字列
SPLIT関数の使い方・読み方
読み方:SPLIT は「スプリット」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)
SPLITは、1つのセルの文字列を、区切り文字で複数のセルに分割する関数です。
Excelでは TEXTSPLIT(365)か、区切り位置ウィザードを使います。
このページの中身(24項目)
この記事の書式と対応環境の出どころ(2026-08-26 確認)
- Google スプレッドシート ヘルプ:公式の書式は
SPLIT(テキスト, 区切り文字, [各文字での分割], [空のテキストを削除])
https://support.google.com/docs/answer/3094136
関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。
「東京都新宿区西新宿」を都道府県と市区町村に分ける、カンマ区切りのデータを列に展開する、といった場面で使います。

Excelにはありません
Excelでは「区切り位置」機能か SPLITの応用(365のみ)を使います。
書式
=SPLIT(文字列, 区切り文字, [各文字で区切るか], [空のセルを削除するか])
| 引数 | 内容 |
|---|---|
| 文字列 | 分割する対象 |
| 区切り文字 | 区切りに使う文字 |
| 各文字で区切るか | 省略時 TRUE。区切り文字の1文字ずつで区切る |
| 空のセルを削除するか | 省略時 TRUE |
第3引数の挙動が独特なので、後で詳しく説明します。
基本の使い方
A1に 東京,大阪,名古屋 が入っているとします。
=SPLIT(A1, ",")
結果: 3つのセルに「東京」「大阪」「名古屋」が横方向に展開されます。
結果は右方向に広がります
右隣にデータがあると #REF! になるので、空けておいてください。

第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の応用)
関連する関数
- REGEXEXTRACT — 正規表現で取り出す。全行適用に強い
- INDEX — 分割結果から1つ選ぶ
- FLATTEN — 複数の結果を縦一列にする
- SUBSTITUTE — 区切り文字を統一する
- 関数一覧に戻る