複数のセルに分かれた文字列をひとつにまとめる作業は、名簿作成や差し込み文書の準備など、事務職の日常業務でひんぱんに登場します。「姓」と「名」を結合して氏名にする、都道府県・市区町村・番地を結合して住所欄をひとつにする、会社名に「様」を付けて宛名を作るといった作業です。&演算子で済ませている人も多いと思いますが、空白セルが混ざったとたんに区切り文字だけが連続する不格好な文字列になったり、日付や数値のセルを結合すると見慣れない数字の羅列になったりと、意外なつまずきが多い領域でもあります。この記事では、&演算子・CONCATENATE・CONCAT・TEXTJOINの違いを整理しながら、実務でのつまずきどころを解説します。

文字列を結合する4つの方法とその違い

Excelで複数の文字列を結合する方法は、大きく分けて4つあります。歴史的な経緯から似た名前の関数が複数存在するため、まずは違いを整理しておきましょう。

&演算子

  • =A1&A2 のように記号でつなぐ
  • 区切り文字は自分で1つずつ挟む必要がある
  • 空白セルの自動スキップはできない

CONCATENATE / CONCAT

  • CONCATENATEは旧式、CONCATが後継
  • CONCATはセル範囲をまとめて指定できる
  • いずれも区切り文字の自動挿入や空白スキップはできない

TEXTJOIN

  • 区切り文字をあらかじめ1回だけ指定できる
  • 空白セルを自動でスキップできる
  • セル範囲をそのまま指定できる

なかでもTEXTJOINは「区切り文字」と「空白セルを無視するかどうか」を最初に指定できる点が最大の強みです。結合したい項目のどこかが空欄でも、区切り文字だけが連続して残ってしまう事故を防げます。

TEXTJOINの基本の書き方

TEXTJOINは「区切り文字」「空白を無視するか」「結合したい範囲」の3つを基本の引数として指定します。範囲は複数まとめて指定することもできます。

=TEXTJOIN(区切り文字, 空白を無視するか, 範囲1, [範囲2], ...)

例:A1に都道府県、B1に市区町村、C1に番地が入っており、空白セルがあっても読点だけを連続させずに住所欄をひとつにまとめる場合
=TEXTJOIN("",TRUE,A1:C1)

第2引数をTRUEにしておけば、C1(番地)が未入力の段階でも「東京都渋谷区,」のように区切り文字だけが末尾に残ることなく、入力済みの項目だけがつながります。区切り文字を空文字("")にすれば、住所のように項目間に記号を挟まずそのまま連結することも可能です。

実務でのよくある使用シーン

総務担当者であれば、社員名簿や取引先マスタで都道府県・市区町村・番地・建物名が別々の列に分かれているデータを、宛名ラベルや郵送物のために1つの住所セルへ結合する場面が典型的です。列によっては建物名が空欄のケースも多く、&演算子で結合していると「東京都渋谷区〇〇1-2-3,」のように末尾に余計なカンマや読点が残りがちですが、TEXTJOINなら空白列を自動でスキップしてくれるため、見た目が整った住所欄をそのまま作成できます。営業事務担当者であれば、見積書や請求書のあて名を「会社名+様」の形で自動生成するために結合式を使う場面がよくあります。会社名のセルに部署名や担当者名を追加したい場合も、CONCATやTEXTJOINで結合しておけば、差し込み文書の作成やメール本文への貼り付けがぐっと楽になります。

CONCAT・TEXTJOINでよくあるエラー・トラブルと対処法

区切り文字だけが連続して不格好な文字列になる

&演算子やCONCATENATEで区切り文字を1つずつ手作業で挟んでいる場合、範囲の途中に空白セルがあると区切り文字だけがそのまま残ってしまいます。

例:=A1&"、"&B1&"、"&C1 でB1が空欄の場合、「東京都渋谷区、、1-2-3」のように読点が連続する

対処法として、&演算子やCONCATENATEではなくTEXTJOINに切り替え、第2引数(空白を無視するか)にTRUEを指定してください。=TEXTJOIN("、",TRUE,A1:C1)とすれば、B1が空欄でも読点が連続することなく自動でスキップされます。

日付や数値を結合すると「45932」のような数字になる

Excelは日付や時刻をシリアル値(1900年1月1日を1とした通し番号)として内部で管理しているため、そのまま結合すると表示上の日付ではなくシリアル値が連結されてしまいます。

例:A1が「2026/9/20」の日付セルの場合、="発注日:"&A1 とすると「発注日:45932」のように意味の分からない数字になる

対処法として、結合する前にTEXT関数で表示形式を指定してからつなげます。="発注日:"&TEXT(A1,"yyyy/m/d")のように書けば、「発注日:2026/9/20」と表示どおりの文字列になります。数値に単位や桁区切りを付けたい場合も同様に、TEXT(A1,"#,##0")のようにTEXT関数を経由させるのが基本です。

TEXTJOINの結果が#VALUE!や#N/Aになる

TEXTJOINで結合しようとしている範囲の中に、もともとエラー値を返しているセルが含まれていると、TEXTJOIN自体もそのエラーをそのまま返してしまいます。

例:=TEXTJOIN("・",TRUE,A1:C1) でB1がVLOOKUPの結果として#N/Aを返している場合、結合結果全体が#N/Aになる

対処法として、まず結合対象の範囲内にエラー値が出ているセルがないか確認しましょう。エラーの原因となっている数式側をIFERRORなどで先に処理しておくか、TEXTJOIN自体もIFERRORで包んで代替表示を用意しておくと安全です。

初心者がつまずきやすいポイントとコツ

まとめ

文字列結合は&演算子でも一応できますが、空白セルが混ざる住所データや、区切り文字を挟みたい宛名データではTEXTJOINが圧倒的に扱いやすい関数です。区切り文字と空白セルの扱いを最初にまとめて指定できるため、後から列が増えても数式を大きく書き直す必要がありません。日付や数値を結合する際はシリアル値がそのまま連結されてしまう点にだけ注意し、TEXT関数で書式を指定してからつなげる習慣をつけておきましょう。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。

よくある質問

CONCATENATEとCONCAT、TEXTJOINは何が違うのですか、どれを使えばいいですか?
CONCATENATEは古いバージョンとの互換のために残されている関数で、Excelの公式ヘルプでも将来的に廃止される可能性がある「互換性関数」として案内されています。後継のCONCATは基本的にCONCATENATEと同じ働きをしますが、セル範囲をそのまま指定できる点が異なります。区切り文字を挟みたい、空白セルを自動でスキップしたいという場合はTEXTJOINが最も便利なので、新しく数式を組むときはTEXTJOINを基本に、区切り文字が不要な単純な連結だけならCONCATを使うのがおすすめです。
TEXTJOINで結合すると区切り文字だけ連続してしまいます。なぜですか?
結合対象の範囲に空白セルが含まれていて、TEXTJOINの第2引数(空白を無視するかどうか)にFALSEを指定している、または&演算子やCONCATENATEで結合しているのが原因です。TEXTJOINの第2引数にTRUEを指定すると、空白セルを自動的にスキップして区切り文字だけが連続することを防げます。
日付や数値のセルを結合すると「45932」のような見慣れない数字になってしまいます。なぜですか?
Excelは日付や時刻を裏側でシリアル値という通し番号として管理しており、&演算子やCONCAT・TEXTJOINで結合すると、セルに表示されている「2026/9/20」ではなく裏側のシリアル値がそのまま連結されてしまうためです。表示通りの文字列として結合したい場合は、結合前にTEXT関数で書式を指定し、TEXT(A1,"yyyy/m/d")のようにテキスト化してから結合します。

関連記事

→ CONCAT・TEXTJOINの数式を作ってみる ← 記事一覧に戻る