Excelでセル範囲の文字列をまとめて結合する方法|TEXTJOIN・CONCAT

Excelでセル範囲の文字列をまとめて結合する方法|TEXTJOIN・CONCAT
結論(先に答え)

区切り文字を挟んで結合するなら =TEXTJOIN("、", TRUE, A2:A6)、区切りなしで良ければ =CONCAT(A2:A6)。改行で区切るには =TEXTJOIN(CHAR(10), TRUE, A2:A6)+「折り返して全体を表示」です。

「A2からA6までの文字列を全部つなげたい」というとき、=A2&A3&A4… と1つずつ書くのは大変ですし、=CONCATENATE(A2:A6) は範囲指定に対応していません。範囲をまとめて結合できるのはTEXTJOIN関数とCONCAT関数です。この記事で使い分けを解説します。

目次

サンプルデータ

練習用Excelファイル(無料ダウンロード)
この記事の解説で使うExcelデータです。数式と練習データが入っているので、本文の式を同じ表で試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
AB
1氏名部署
2佐藤営業
3鈴木総務
4高橋営業
5田中経理
6伊藤営業
TEXTJOIN関数でセル範囲の文字列を区切り文字付きでまとめて結合する図解

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

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

方法1:TEXTJOIN関数(区切り文字あり・おすすめ)

手順:D2 に TEXTJOIN の式を入れて Enter

D2 に次の式を入力して、Enter キーを押します❶。

D2 に入れる式
=TEXTJOIN("、",TRUE,A2:A6)
"、" 区切り文字(、)TRUE 空のセルは無視(無視)A2:A6 テキスト1(氏名)
ひとことで氏名の範囲を、「、」で区切って1つの文字にまとめる
式を分けて読むと(色は画像の枠と同じ)
区切り文字"、"
間に何を入れる?
→ 「、」
空のセルは無視TRUE
空白はどうする?
→ TRUE=飛ばす
テキスト1A2:A6
どこをつなぐ?
→ 氏名の範囲
自分の表で使うときは
オレンジに区切り、紫に TRUE、青につなぐ範囲を入れます。例:部署(B 列)を「/」でつなぐ=TEXTJOIN("/",TRUE,B2:B6)
  • Excel 2019・Microsoft 365 以降で使えます。
エクセルのTEXTJOIN関数で範囲の文字を区切ってつなぐ式と、つなぐ範囲を色分けした画面
エクセルのTEXTJOIN関数で範囲の文字を区切ってつなぐ式と、つなぐ範囲を色分けした画面

確認:5人の名前が「、」でつながった

エクセルのTEXTJOIN関数で5人の氏名が読点でつながったことを示した画面
エクセルのTEXTJOIN関数で5人の氏名が読点でつながったことを示した画面

答えは 佐藤、鈴木、高橋、田中、伊藤 になりました❷。式は、次の順に計算しています。

  1. A2:A6の名前を上から並べる
    ⇒ 佐藤・鈴木・高橋・田中・伊藤
  2. 「、」をはさんでつなぐ
    ⇒ 佐藤、鈴木、高橋、田中、伊藤
ポイント引数は「区切り文字」「空のセルを無視するか(TRUE=無視)」「結合する範囲」の3つです。第2引数をTRUEにしておくと、範囲内に空白セルがあっても「、、」と区切り文字が連続しません。

改行で区切って結合する

セルに入力:改行で区切って、つなぐ
数式=TEXTJOIN(CHAR(10),TRUE,A2:A6)
ひとことで区切り文字を改行(CHAR(10))にして、1つのセルの中で、1行ずつ表示する
CHAR(10)
改行を表す文字です。区切り文字として指定します
TRUE
空のセルを無視します
補足結果のセルの書式で「折り返して全体を表示する」をオンにすると、セル内で、1行ずつ表示されます。
ポイントCHAR(10) は改行コードです。セルの書式で「折り返して全体を表示する」をオンにすると、1つのセル内に1行ずつ表示されます。
練習用Excelファイル(無料ダウンロード)
氏名や部署を書き換えて、つながる文字が変わるのを確認できます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

方法2:CONCAT関数(区切りなし)

E3に入力:CONCATで、区切りなしでつなぐ
数式=CONCAT(A2:A6)
ひとことで範囲の文字を、区切りなしで、左(上)から順につなぐ
A2:A6
つなぐ範囲です
補足旧来のCONCATENATEは、範囲を、そのまま渡せません。CONCATは、その範囲対応版です。
ポイント区切り文字が不要なら CONCAT が最短です。旧来のCONCATENATE関数の範囲対応版と考えてください。

応用:条件に合うセルだけを結合する

ポイントFILTER関数と組み合わせると、「営業部の氏名だけを結合」といった条件付き結合ができます。
E4に入力:条件に合うセルだけをつなぐ
数式=TEXTJOIN("、",TRUE,FILTER(A2:A6,B2:B6="営業"))
ひとことで部署が「営業」の人の氏名だけを、「、」でつなぐ
A2:A6
取り出す範囲です。氏名の列です
B2:B6="営業"
条件です。部署が「営業」の行が TRUE になります
FILTER(…)
条件に合う氏名だけを取り出します。その結果を、TEXTJOINがつなぎます
データの流れ
① 営業の行の氏名を取り出す
A2佐藤A3鈴木A4高橋A5田中A6伊藤
▼
② 「、」でつなぐ結果
E4佐藤、高橋、伊藤

旧バージョンの場合

ポイントTEXTJOIN・CONCATはExcel 2019以降で使えます。Excel 2016以前では =A2&"、"&A3&… と&演算子でつなぐか、作業列を使ってください。
ポイント反対に、カンマ区切りの文字列を複数のセルに分けたい場合は、TEXTSPLITでカンマ区切りを縦・横に分割する方法をご覧ください。
練習用Excelファイル(無料ダウンロード)
D2に式を入れて、A2:A6の氏名が「、」でつながることを確かめられます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

まとめ

やりたいこと数式
「、」区切りで結合=TEXTJOIN(“、”, TRUE, 範囲)
区切りなしで結合=CONCAT(範囲)
改行区切りで結合=TEXTJOIN(CHAR(10), TRUE, 範囲)
条件に合うセルだけ結合=TEXTJOIN(“、”, TRUE, FILTER(範囲, 条件))

▶ こんな場合はこちら:結合の逆=区切り文字で分割する(TEXTSPLIT)/カンマ区切りの文字列を縦に分割して並べる

文字列の分割・結合をまとめて確認したいときは、文字列の分割・結合・取り出しの方法もあわせてご覧ください。

セル内で改行する方法を、基本から確認したいときは、エクセルのセル内改行(Alt+Enter・Mac・関数)もあわせてご覧ください。

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

この記事を書いた人

コメント

コメントする

目次