タグ: TEXTJOIN

  • TEXTJOIN関数の使い方|区切り文字を入れて範囲をまとめて連結

    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)。セルの折り返し設定も必要

    関連する関数