要点 —
TEXTJOINは値の範囲を1つの文字列につなぎ、あいだに区切り文字を入れ、 そして——ここをほぼ全員が見落とします——空白セルを勝手に飛ばします。構文は=TEXTJOIN(区切り文字, 空白を無視, テキスト1, …)。肝は第2引数です。TRUEなら 空白を飛ばし"田中, , , 佐藤"のようにはならない。FALSEなら空きを残す。知って おく上限が1つ。結果は 32,767文字(セル1個分)を超えられず、超えると#VALUE!になります。Excel 365 / 2019 以降に対応。
=TEXTJOIN(", ", TRUE, A2:A100)
=TEXTJOIN(" | ", TRUE, FILTER(Email, Status = "有効"))
長らく、名前の列を "田中, 佐藤, 鈴木" にするには A2 & ", " & A3 & ", " & A4 …
という鎖が必要で、セルが空になった瞬間(, , が紛れる)や誰かが行を挿入した瞬間に
壊れました。TEXTJOIN はその鎖を、範囲・区切り文字・空白スイッチの1つの式に置き換え
ます。「1つのセルにリストを入れたい」ときの定番関数です。
この記事でわかること
- なぜ区切り文字ではなく
空白を無視(ignore_empty)が肝心の引数なのか - 32,767文字の上限と、それが招く
#VALUE! CONCAT・CONCATENATE・&演算子よりTEXTJOINが勝つ場面- スピルした結果(
FILTER・UNIQUE)を1セルにまとめる方法 - ほぼ誰も試さない区切り文字の裏技——区切り文字の配列
考え方の軸:区切り文字つきのグルーガン
& 演算子と古い CONCATENATE は一度に2つを貼り、区切り文字はペアごとに手で打ち
ます。TEXTJOIN はグルーガンです。区切り文字を1つ装填し、範囲全体に狙いを定めると、
区切りを値のあいだにだけ自動で置きます——末尾には付けません。この一点が、
TEXTJOIN が存在する理由であり、はるかに読みやすい理由です。
' 旧来——区切りを手で繰り返し、空白セルで壊れる:
=A2 & ", " & A3 & ", " & A4 & ", " & A5
' TEXTJOIN——区切り1つ、範囲1つ:
=TEXTJOIN(", ", TRUE, A2:A5)
すべての鍵となるルール:空白を無視こそが本体
「リストがカンマだらけになる」という相談で最も多いのがこれです。原因は区切り文字
ではなく第2引数。空白を無視 が、空白セルの扱いを決めます。
' A3 と A5 が空:
=TEXTJOIN(", ", TRUE, A2:A6) ' -> "田中, 佐藤, 鈴木" (空白はスキップ)
=TEXTJOIN(", ", FALSE, A2:A6) ' -> "田中, , 佐藤, , 鈴木" (空白を残す)
TRUE が95%の場面で正解です。区切りの重複も、先頭・末尾のカンマもない、きれいな
リストになります。FALSE はもっとまれで意図的な選択——各位置が別の何かと揃う必要が
あるとき(固定長レコード、空でも3番目の枠は3番目のままにしたいテンプレート)です。
& や CONCATENATE が脆く感じるのは、このスイッチに当たるものが無いから。空白セル
が全部、後で掃除する「見える穴」になります。
誰も言わない上限:32,767文字
TEXTJOIN の結果は1つのセルに収まり、セルは最大32,767文字です。長い列をつなぐと
この上限を越えられます——そのとき Excel は切り詰めた文字列ではなく #VALUE! を返し
ます。
=TEXTJOIN(",", TRUE, A:A) ' -> 結合後が32,767文字を超えると #VALUE!
ここに当たったら、たいてい作るものを間違えています——数万文字の置き場として1つの
セルはまず適切ではありません。範囲を区切る(A2:A500)か、そもそもそのデータが
1セルに入るべきかを考え直しましょう。
スピルした配列を1セルにまとめる
ここで TEXTJOIN は現代 Excel での価値を発揮します。動的配列関数——
FILTER・UNIQUE・
SORT——は結果を多数のセルにスピルします。逆に、その
スピルを読める1つの文字列に畳みたいことがあります(まとめセル、メールの「宛先」行、
CSVの1行)。TEXTJOIN は配列をそのまま受け取るので、入れ子にします。
' 有効な顧客のメールを、重複なしで、1セルに:
=TEXTJOIN("; ", TRUE, UNIQUE(FILTER(Email, Status = "有効")))
管理するスピル範囲も作業列も不要——内側の関数が配列を作り、TEXTJOIN がそれを平らに
します。区切り文字は配列にもでき({", "; " と "})、最後の要素だけ別のつなぎ方に
する裏技も使えます。ほとんどの解説が見せない技です。
判断:TEXTJOIN・CONCAT・& のどれ?
& は既知の2〜3個を貼るときだけ(姓 & " " & 名)。範囲やリストをつなぐ瞬間、
問いはこうなります——区切り文字が要るか、空白を飛ばしたいか。要るなら——そしてほぼ
常に要ります——TEXTJOIN。CONCAT に手を伸ばすのは、
本当に区切りなしかつ空白を飛ばさないときだけ。& や SUBSTITUTE を足して区切り
を偽装し始めた時点で、最初から欲しかったのは TEXTJOIN です。
ExcelMaster の使いどころ
TEXTJOIN の作業の多くは、要するに「この列を、どこかに貼れる文字列にして」です——
期限超過の人全員のメールアドレスを、セミコロン区切りで。ExcelMaster は、
空白を無視 スイッチも、つなぎに必要な FILTER/UNIQUE も含めて、その式を日本語の
指示から書き、置きたい場所に結果を出します。リストはあなたが説明し、結合は任せられ
ます。
よくある質問
Excelでセルをカンマで結合するには?
=TEXTJOIN(", ", TRUE, A2:A100) を使います。第1引数が区切り文字、第2引数(TRUE)が
空白セルのスキップ、第3引数が範囲です。カンマと空白は値のあいだにだけ現れ、末尾には
付きません。
TEXTJOINで空白セルを無視させるには?
第2引数を TRUE にします:=TEXTJOIN(", ", TRUE, 範囲)。FALSE だと空白セルが空の
枠になり、"a, , b" のように区切りが重複します。
TEXTJOINが#VALUE!を返すのはなぜ?
最も多い原因は32,767文字の上限です。セルはそれ以上入らないため、値が多すぎる結合は あふれます。範囲を小さくするか、そのデータが1セルに収まるべきかを考え直しましょう。
TEXTJOINとCONCATENATEの違いは?
CONCATENATE(と &)は区切りなしで値を貼り、空白を飛ばす手段もなく、CONCATENATE
は範囲をまるごと取れません——セルを1つずつ並べます。TEXTJOIN は範囲や配列を取り、
区切りを自動で入れ、必要なら空白を飛ばします。リストなら TEXTJOIN が常に勝ちます。
TEXTJOINはExcel 2016で使える?
使えません。TEXTJOIN は Excel 2019 / 365 から。2016では & か CONCATENATE で
区切りを手書きします。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-06-17。
関連ガイド: ExcelのTEXTSPLIT関数 · ExcelのCONCAT関数 · ExcelのFILTER関数 · VBAの文字列連結
