TEXTJOINで複数セルの文字列を条件付きで結合する方法

複数のセルに入力された文字列を1つにまとめたいとき、結論から言うとTEXTJOIN関数を使えば区切り文字を指定しながら範囲全体を一度に結合でき、IF関数と組み合わせれば「条件を満たすセルだけ」を結合することもできます。この記事では基本の書き方、CONCATENATEとの違い、条件付き結合のやり方まで解説します。

目次

TEXTJOINの基本の書き方

基本の形は次の通りです。

=TEXTJOIN(区切り文字,空白セルを無視するか,結合範囲1,結合範囲2,...)

区切り文字を挟みながら、指定した範囲のセルをまとめて1つの文字列につなげる関数です。

第2引数に「TRUE」を指定すると、範囲内の空白セルは自動的にスキップされ、区切り文字が連続してしまうことを防げます。結合範囲はセルを1つずつ指定するのではなく、範囲としてまとめて渡せます。

なぜCONCATENATEではなくTEXTJOINなのか

従来のCONCATENATE関数(や「&」演算子)は、結合したいセルを1つずつすべて指定する必要があり、範囲をまとめて渡すことができません。また空白セルもそのまま結合されるため、区切り文字だけが連続して残ってしまうことがあります。TEXTJOINは範囲をまとめて指定でき、空白セルを自動で無視できる点がCONCATENATEとの大きな違いです。

具体例:条件を満たすセルだけを結合する

次のような参加者リスト(A1:B6)があるとします。

A(氏名) B(参加)
2 佐藤
3 鈴木
4 田中
5 山本
6 高橋

単純に全員の氏名を結合するだけなら次の通りです。

=TEXTJOIN("、",TRUE,A2:A6)

A2:A6の氏名を「、」で区切って全部つなげるだけの、シンプルな結合です。

一方、「参加」列が「○」の人だけを結合したい場合は、IF関数と組み合わせます。

=TEXTJOIN("、",TRUE,IF(B2:B6="○",A2:A6,""))

「参加が○の人だけ」をIFで選び出してから、TEXTJOINでつなげている、という2段構えの数式です。

IF関数が条件に一致しない行を空文字(””)に置き換え、TEXTJOINの第2引数「TRUE」がその空文字を無視して結合するため、結果は「佐藤、田中、高橋」となります。

配列数式として入力する際の注意

Excel 2019以前など古いバージョンでは、IF関数に範囲を渡す上記の数式は「配列数式」として扱われるため、入力後にCtrl+Shift+Enterで確定する必要があります(数式バーに{ }が自動で付与されます)。Microsoft 365やExcel 2021以降は動的配列に対応しているため、通常通りEnterキーだけで確定できます。

よくあるエラー・注意点

  • 区切り文字が連続してしまう: 第2引数を「FALSE」にすると空白セルも結合対象になり、区切り文字だけが連続して残ります。空白を無視したい場合は必ず「TRUE」を指定してください。
  • 結合結果がセルの表示上限に達する: 結合するセル数が多いと、1つのセルに収まりきらないほど長い文字列になることがあります。件数が多い場合は結合前に件数を確認しておくと安心です。
  • 条件に合うセルの「数」を数えたいだけの場合: 文字列を結合する必要がなく、単に件数を数えたいだけであればCOUNTIFSで複数条件を満たすセルの個数を数える方法の方がシンプルです。

まとめ

TEXTJOINは区切り文字を指定しながら範囲全体を結合でき、IF関数と組み合わせることで条件を満たすセルだけを抽出して結合できます。条件を満たす「件数」を数えたい場合はCOUNTIFS、集計値を求めたい場合は関連記事もあわせてご覧ください。

目次