TEXTJOINは、区切り文字を入れながら、複数のセルをまとめて連結する関数です。
CONCATENATE や & と違い、範囲をそのまま渡せて、空欄を自動で飛ばせます。 文字列連結の場面では、まずこれを検討してください。
書式
=TEXTJOIN(区切り文字, 空欄を無視するか, 文字列1, [文字列2], ...)
| 引数 | 内容 |
|---|---|
| 区切り文字 | 間に入れる文字。不要なら "" |
| 空欄を無視するか | TRUE=空欄を飛ばす / FALSE=空欄も区切り文字を入れる |
| 文字列 | セル、範囲、直接入力のいずれも可 |
第2引数はほぼ TRUE で使います。
基本の使い方
| A | |
|---|---|
| 1 | 東京 |
| 2 | 大阪 |
| 3 | (空欄) |
| 4 | 名古屋 |
=TEXTJOIN(", ", TRUE, A1:A4)
結果:東京, 大阪, 名古屋
空欄が飛ばされているので、東京, 大阪, , 名古屋 のような区切り文字の連続が起きません。
第2引数を FALSE にすると空欄も1件として扱われます。
=TEXTJOIN(", ", FALSE, A1:A4) → 東京, 大阪, , 名古屋
列の位置を揃えたいときだけ FALSE を使ってください。
CONCATENATEとの違い
| CONCATENATE | TEXTJOIN | |
|---|---|---|
| 範囲をそのまま渡す | 不安定 | できる |
| 区切り文字 | 手で挟む | 引数で指定 |
| 空欄を飛ばす | できない | できる |
TEXTJOINで置き換えられない場面はほぼありません。
条件に合うものだけ連結する
TEXTJOINが最も活きる使い方です。FILTER と組み合わせます。
| A | B | |
|---|---|---|
| 1 | 東京 | 山田 |
| 2 | 大阪 | 鈴木 |
| 3 | 東京 | 佐藤 |
東京の担当者だけを並べます。
=TEXTJOIN("、", TRUE, FILTER(B1:B3, A1:A3="東京"))
結果:山田、佐藤
「1対多」の関係を1セルにまとめられるのがこの組み合わせの価値です。VLOOKUP は1件しか返せませんが、これなら該当を全部つなげられます。
支店ごとに一覧を作るなら、UNIQUE と組み合わせます。
E2: =UNIQUE(FILTER(A1:A100, A1:A100<>""))
F2: =TEXTJOIN("、", TRUE, FILTER($B$1:$B$100, $A$1:$A$100=E2))
F2を下にコピーすれば、支店別の担当者一覧が完成します。
改行で連結する
CHAR(10) を区切り文字にします。
=TEXTJOIN(CHAR(10), TRUE, A1:A10)
セルの書式で「折り返し」を有効にしないと、改行が見えません。 数式が正しくても1行に見えるので、まず書式を確認してください。
重複を除いて連結する
UNIQUE を挟みます。
=TEXTJOIN("、", TRUE, UNIQUE(FILTER(A1:A100, A1:A100<>"")))
並べ替えてから連結する
SORT を挟みます。
=TEXTJOIN("、", TRUE, SORT(FILTER(A1:A100, A1:A100<>"")))
FILTER → UNIQUE → SORT → TEXTJOIN の順で重ねると、「条件に合うものを、重複なしで、並べ替えて、1セルにまとめる」が1本の数式で書けます。
=TEXTJOIN("、", TRUE, SORT(UNIQUE(FILTER(B1:B100, A1:A100="東京"))))
日付や数値を連結する
そのまま渡すと内部の数値が出ます。TEXT で書式を指定してください。
=TEXTJOIN("、", TRUE, ARRAYFORMULA(TEXT(A1:A10, "m/d")))
ARRAYFORMULA で包むことで、範囲の全要素に TEXT が効きます。
注意点
結果の文字数に上限があります。 1セルに入る文字数(約5万文字)を超えるとエラーになります。数千件を連結するような使い方はできません。
元データが変わると結果も変わります。 これは利点でもありますが、「その時点の一覧」を保存したいなら、結果をコピーして値貼り付けしてください。
エラーの対処
#VALUE! が出る
- – 区切り文字が指定されていない(
""でも必ず書く) - – 第2引数が抜けている
引数が3つ必要な点を確認してください。
空欄が飛ばされない
第2引数が FALSE になっています。TRUE にしてください。
なお、数式が返した ""(空文字)は空欄として扱われるので、TRUE なら飛ばされます。
結果が長すぎて切れる
文字数の上限に達しています。FILTER で件数を絞るか、複数セルに分割してください。
Excelとの違い
TEXTJOINはExcelにもあります(Microsoft 365 / Excel 2019以降)。書式・挙動ともに同じです。
Excel 2016以前では使えません。その場合は CONCATENATE と & で書くか、作業列を使った方法になります。
条件付き連結(FILTER との組み合わせ)は、ExcelでもFILTER関数が使える環境(365/2021以降)なら同じ書き方ができます。
まとめ
- – 書式は
=TEXTJOIN(区切り文字, TRUE, 範囲) - – 範囲をそのまま渡せて、空欄を自動で飛ばせる
- – CONCATENATE の上位互換。基本はこちらを使う
- –
FILTERと組み合わせると条件付き連結ができる - – FILTER → UNIQUE → SORT → TEXTJOIN で1対多の一覧が1本の数式に
- – 改行は
CHAR(10)。セルの折り返し設定も必要
コメントを残す