エクセルで改行ごとにセルを分割する方法|区切り位置・関数・TEXTSPLIT・自動改行

エクセルで改行ごとにセルを分割する方法|区切り位置・関数・TEXTSPLIT・自動改行

エクセルで、セルの中の改行ごとに、文字を別のセルに分けるには、「データ」タブの「区切り位置」が、いちばん手軽です。関数で分けるなら、=TRIM(MID(SUBSTITUTE($A3,CHAR(10),REPT(" ",50)),1,50)) のように、改行を長い空白に置き換えて、取り出します。

この記事では、改行ごとにセルを分ける関数、区切り位置での分割、TEXTSPLIT関数、自動で改行する設定、Enterキーのあとに移動する方向を、1つの表を使って説明します。下の練習ツールで、文字を書き換えて、結果の変わり方を試せます。改行の入れ方は、セル内改行の方法を参照してください。

目次

改行ごとにセルを分ける|やりたいこと別の方法

やりたいこと方法・式(例)ポイント
改行ごとに、横のセルに分ける(手軽)「データ」→「区切り位置」区切り文字に、Ctrl + J を指定します。
改行ごとに、関数で分ける=TRIM(MID(SUBSTITUTE($A3,CHAR(10),REPT(” “,50)),1,50))「1」を、51、101 に変えて、次の行を取ります。
Microsoft 365 で、1つの式で分ける=TEXTSPLIT(A3,CHAR(10))横に、自動で広がります。
いちばん最後の行を、取り出す=TRIM(RIGHT(SUBSTITUTE(A3,CHAR(10),REPT(” “,50)),50))行数が、決まっていないときに便利です。
行数を、数える=LEN(A3)-LEN(SUBSTITUTE(A3,CHAR(10),””))+1改行の数に、1を足します。
分けた行を、またつなぐ=TEXTJOIN(“、”,TRUE,B3:D3)空のセルは、飛ばされます。
文字が長くて、自動で改行したい「折り返して全体を表示する」列の幅に合わせて、自動で折り返します。
ポイントポイント:関数の式は、1行目・2行目・3行目で、「1・51・101」だけが違います。「50」は、1行に入る、最大の文字数です。長い行があるときは、数字を大きくします。

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

関数で、改行ごとにセルを分ける

関数で分けるときは、まず、改行を、50個の空白に置き換えます。そうすると、各行が、50文字ごとの間隔で、離れます。そこから、MID関数で、必要な位置の50文字を取り出して、TRIM関数で、余分な空白を、取り除きます。

1
結果を出したいセル(B3)を選びます。
2
「=TRIM(MID(SUBSTITUTE(」と入力します。
3
元の文字のセル($A3)をクリックして、「,CHAR(10),REPT(” “,50)),1,50))」と入力します。
4
Enter キーを押して、横と下に、コピーします。
TRIM関数の式
数式=TRIM(MID(SUBSTITUTE($A3,CHAR(10),REPT(" ",50)),1,50))
ひとことで余分なスペースを削除
MID(SUBSTITUTE($A3,CHAR(10),REPT(" ",50)),1,50)
文字列です
エクセルで改行ごとに分割した表(元の文字、1行目、2行目、3行目、行数、各式の結果)
エクセルで改行ごとに分割した表(元の文字、1行目、2行目、3行目、行数、各式の結果)

1行目は 山田 になります。2行目は、開始位置を「51」に、3行目は「101」に変えます。山田・営業部・東京が、3つのセルに、分かれます。横にコピーするときは、開始位置を、(COLUMN()-2)*50+1 のように、列番号から作ると、式を、1つにそろえられます。

最後の行や、2行目だけを取り出す

行数が決まっていないときは、いちばん最後の行を、RIGHT関数で取り出します。

TRIM関数の式
数式=TRIM(RIGHT(SUBSTITUTE(A3,CHAR(10),REPT(" ",50)),50))
ひとことで余分なスペースを削除
RIGHT(SUBSTITUTE(A3,CHAR(10),REPT(" ",50)),50)
文字列です

山田・営業部・東京の、最後の行は 東京 です。2行目だけなら、=TRIM(MID(SUBSTITUTE(A3,CHAR(10),REPT(" ",50)),51,50)) で、結果は 営業部 です。1行目だけなら、=LEFT(A3,FIND(CHAR(10),A3)-1) でも、山田 を取り出せます。

「区切り位置」で、改行ごとに分ける

式を使わずに、データそのものを、分けたいときは、「区切り位置」を使います。元のセルが、書き換わるので、先に、コピーをとっておきます。

1
分けたいセルの範囲(A3:A6)を選びます。
2
「データ」タブの「区切り位置」をクリックします。
3
「カンマやタブなどの区切り文字によって…」を選んで、「次へ」をクリックします。
4
「その他」にチェックを入れて、右の欄で、Ctrl + J キーを押します。
5
「完了」をクリックします。

Ctrl + J は、改行を、入力するキーで、欄には、何も表示されません。区切り位置の、くわしい使い方は、区切り位置の使い方を参照してください。

Microsoft 365 なら、TEXTSPLIT関数が便利

Microsoft 365 などの、新しいバージョンなら、TEXTSPLIT関数で、1つの式で、分けられます。

TEXTSPLIT関数の式
数式=TEXTSPLIT(A3,CHAR(10))
ひとことでTEXTSPLIT
A3
です
CHAR(10)
です

山田・営業部・東京が、横に、自動で広がります。縦に分けるときは、列の区切りを、省略して、行の区切りに、CHAR(10) を指定します(=TEXTSPLIT(A3,,CHAR(10)))。古いバージョンでは、使えないので、その場合は、前の関数の方法を使います。

自動で改行する・Enterのあとに移動する

文字が長いときに、セルの幅に合わせて、自動で改行するには、「ホーム」タブの「折り返して全体を表示する」を、オンにします。列の幅を変えると、改行の位置も、自動で変わります。

Enter キーを押したあとに、移動する方向は、設定で変えられます。「ファイル」→「オプション」→「詳細設定」の、「Enterキーを押したら、セルを移動する」の、方向を選びます。「下」にすれば、入力のあとに、下のセルへ、移動します。

改行ごとに分けられないときの確認表

症状考えられる原因対処
「区切り位置」で、分かれないCtrl + J を、入力していない「その他」の欄で、Ctrl + J を押す。
行が、欠ける1行が、50文字を超えている式の「50」を、大きくする。
2行目以降が、空になる開始位置が、同じになっている1・51・101 のように、50ずつ、増やす。
「#NAME?」と表示されるTEXTSPLIT関数が、使えないバージョンSUBSTITUTE関数を使った式に、する。
分けたあと、文字が、ずれる元のセルを、直接、分けた先に、元のデータを、コピーしておく。
自動で、折り返されない折り返しが、オフになっている「折り返して全体を表示する」を、オンにする。
値を変えても、結果が変わらない計算方法が「手動」になっている「数式」タブの「計算方法の設定」を「自動」にする。

改行ごとの分割のよくある質問

改行ごとに、セルを分けるには?

「データ」タブの「区切り位置」で、区切り文字に、Ctrl + J を指定するのが、手軽です。関数なら、SUBSTITUTE関数とMID関数の、組み合わせを使います。

Microsoft 365 で、1つの式で、分けるには?

=TEXTSPLIT(A3,CHAR(10)) です。結果が、横に、自動で広がります。

1行を、複数行に、分けるには?

縦に分けるときは、=TEXTSPLIT(A3,,CHAR(10)) です。古いバージョンでは、INDEX関数と、行番号の組み合わせで、作れます。

あわせて読みたい:改行・文字の分割の関連記事

練習用ファイル:練習用Excelファイル(.xlsx・無料)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次