CONCAT vs CONCATENATE vs 「&」 ― 結合の歴史と正しい使い分け

💡 結論:実務での使い分け方

Excelで文字列をくっつける(結合する)方法は主に3つあります。かつては CONCATENATE が主流でしたが、現在では &(アンパサンド) または CONCAT(あるいはさらに高度な TEXTJOIN)を使うのが基本です。

データテーブル
手法 構文・書き方 特徴・評価 「範囲」の一括指定
& 演算子 =A1 & B1 & C1 最も早くて直感的。2〜3個の結合ならこれ一択。関数名も不要 不可(A1:A5等は使えない)
CONCAT 関数
(Excel 2019以降)
=CONCAT(A1:A5)
=CONCAT(A1, "-", B1)
CONCATENATEの完全上位互換。大量のセル範囲を一瞬で結合できる 可能(一括でくっつけられる)
TEXTJOIN 関数
(Excel 2019以降)
=TEXTJOIN(",",TRUE,A1:A5) 区切り文字+空白セル除外が可能。最も高機能な結合関数 可能
CONCATENATE 関数
(旧バージョン互換)
=CONCATENATE(A1, B1, C1) 2019以降では CONCAT に完全に置き換えられた。& でも同じことができるため、新規に使う理由は薄い 不可(1個ずつカンマでつなぐ)

【1】基本はコレ!「&」演算子で結合する

「姓」と「名」をつなぐなど、2〜3個のセルや固定文字をつなぐだけなら、関数を使う必要は全くありません。

=A2 & B2
=A2 & " " & B2

間に全角スペースを入れて結合する例。

メリット: 関数名を入力する手間がなく、=入力 中に直感的にセルをクリックしながら & を挟むだけで作れます。他の関数の中に組み込む(ネストする)際も、数式がシンプルで読みやすくなります。

デメリット: 結合するセルが「10個」「20個」と増えていくと、=A1&A2&A3&A4&A5... と書き続けるのが大変になります。また、セル範囲(A1:A10)を一括で指定することはできません。

💡 数値や日付を結合するときの注意
& で数値セルを結合すると、表示形式が無視されてExcel内部のシリアル値がそのまま文字列化されます。たとえば日付セル(2026/4/8)を & で結合すると "46114" のような数値になります。これは CONCATENATECONCAT でも同じ挙動です。日付や通貨をフォーマット付きで結合したい場合は TEXT 関数を併用してください。
=TEXT(A2, "yyyy/mm/dd") & " 納品"

【2】CONCATENATE は本当に「価値なし」なのか?

ネット上には「CONCATENATEは完全に不要」という極端な記述もありますが、公平に評価すると以下のようになります。

CONCATENATEの弱点

❌ 範囲を一括指定できない
=CONCATENATE(A1:A5) ← 期待どおりに動かない(動的配列対応環境ではスピルする) =CONCATENATE(A1, A2, A3, A4, A5) ← こう書く必要がある

「A1からA5まで一括で結合」ができないのが最大の弱点。セルが増えるほど記述が冗長になります。

CONCATENATEに残された存在意義

データテーブル
場面 CONCATENATEの評価 代替手段
Excel 2016 以前との互換性が必要なブック CONCAT / TEXTJOIN が使えないため、関数で結合するなら唯一の選択肢 & 演算子で代替可能(全バージョンで動作)
Google Sheets との双方向互換 Google Sheets では CONCATENATE が標準関数として広く使われている Google Sheets も & に対応。CONCAT も使用可能
引数が明確に区切られる点を好む場合 関数の括弧内でカンマ区切りされるため、長い数式で視認性が良いと感じる人もいる 好みの問題。& でも十分に読める
💡 結論:CONCATENATEは「積極的に使う理由がない」関数
完全に無価値というわけではなく、旧バージョン互換という存在意義は残っています。しかし、& 演算子は全バージョンで動作し、範囲の一括結合が不要な場面では CONCATENATE と全く同じことができます。Excel 2019 以降なら CONCAT が完全上位互換です。つまり「CONCATENATE でなければできないこと」は存在しないため、新規に数式を書く際にあえて選ぶ理由はありません。既存のブックに入っているものを慌てて書き換える必要もありません。
⚠️ 動的配列対応環境でのスピル動作に注意
Microsoft 365 や Excel 2021/2024 などの動的配列対応環境では =CONCATENATE(A1:A5) と書くとエラーではなくスピル展開(各セルの値がそれぞれ別のセルに出力される)になる場合があります。これは「A1〜A5を1つに結合する」動作ではなく、配列の各要素が個別に返される動作です。意図した結合にはなりません。

【3】「範囲を一気に結合」できる CONCAT 関数

Excel 2019 以降で使える CONCAT 関数は、CONCATENATE の弱点を完全に克服した後継関数です。

最大のメリットは セル範囲(A1:A10など)をドラッグして一括指定できる ことです。

データテーブル
AB
1東京品川
2
3
4
5
=CONCAT(A1:A5)

結果: 東京都港区芝 ― A1〜A5の5セルが区切り文字なしで一気に結合されます。

=CONCAT(A1:B3)

結果: 東京品川都県港市 ― 2次元の範囲は「左から右、上から下」の順で結合されます。

これまで =A1&A2&A3&A4&A5 と書いていたものが、=CONCAT(A1:A5) だけで済むようになりました。

CONCAT の注意点

⚠️ 区切り文字を入れられない
CONCAT は「ただベタッとくっつける」だけです。セル間にカンマやスラッシュを挟みたい場合は、次のセクションの TEXTJOIN を使うか、& で手動で挟む必要があります。
⚠️ 空白セルも結合される
範囲内に空白セルがあっても無視されず、「何もない文字列("")」としてそのまま結合されます。空白を除外したい場合は TEXTJOIN の第2引数を使います。

【4】最も高機能な結合関数:TEXTJOIN

CONCAT は「ただベタッとくっつける」だけですが、実務では「カンマ区切りで結合したい」「空白のセルは無視して結合したい」という要望がよく出ます。これを完璧に叶えるのが TEXTJOIN 関数です。

=TEXTJOIN(",", TRUE, A1:A5)

第1引数:区切り文字(カンマ、スラッシュ、スペース等)
第2引数:空白セルを無視するか(TRUE=無視 / FALSE=含める)
第3引数:結合する範囲

CONCAT との違いを具体例で比較

データテーブル
A
1りんご
2みかん
3(空白)
4バナナ
CONCAT の場合(区切りなし・空白も含む)
=CONCAT(A1:A4) → "りんごみかんバナナ" 空白セルは無視されるが区切り文字もない
✅ TEXTJOIN の場合(カンマ区切り・空白除外)
=TEXTJOIN(",", TRUE, A1:A4) → "りんご,みかん,バナナ" 空白セル(A3)がきれいに除外される
TEXTJOINの詳しい使い方は別記事へ!
TEXTJOIN関数の詳細ページ では、IF や FILTER との組み合わせで条件に合うものだけを結合するなど、より高度なテキスト生成テクニックを解説しています。

【5】実務パターン集:場面ごとの最適解

パターン① 姓+名の結合 → & が最適

=A2 & " " & B2

2セルの結合に関数を持ち出す必要はありません。最もシンプルな & が正解です。

パターン② 住所の結合(都道府県+市区町村+番地) → & が最適

=A2 & B2 & C2

3つ程度なら & で十分です。区切り文字も不要な場面が多いでしょう。

パターン③ 日付+時刻のフォーマット結合 → & + TEXT

=TEXT(A2,"yyyy年m月d日") & " " & TEXT(B2,"h:mm")

日付や時刻は TEXT で表示形式を指定してから結合します。これは CONCAT でも CONCATENATE でも同じです。

パターン④ 縦に並んだ20個のセルを一気に結合 → CONCAT が最適

=CONCAT(A1:A20)

& で20個つなぐのは現実的ではありません。範囲指定ができる CONCAT の出番です。

パターン⑤ タグやカテゴリをカンマ区切りで結合 → TEXTJOIN が最適

=TEXTJOIN(", ", TRUE, A1:A10)

区切り文字が必要で、空白セルを除外したい場面では TEXTJOIN 一択です。

パターン⑥ 条件に合うデータだけを結合 → TEXTJOIN + IF

=TEXTJOIN(", ", TRUE, IF(B1:B10="合格", A1:A10, ""))

Ctrl+Shift+Enter(旧バージョン)または自動スピル(動的配列対応環境)で確定。B列が「合格」の行だけ、A列の値をカンマ区切りで結合します。

【6】総合比較表

データテーブル
比較項目 & 演算子 CONCAT TEXTJOIN CONCATENATE
範囲の一括指定 不可 可能 可能 不可
区切り文字 手動で挟む 不可 第1引数で指定 手動で挟む
空白セルの除外 不可 不可 第2引数で制御 不可
数式の短さ(2〜3個結合) 最も短い やや冗長 冗長 関数名が長い
数式の短さ(10個以上結合) 非常に長くなる 範囲指定で短い 範囲指定で短い 非常に長くなる
ネストのしやすさ 最も自然 普通 普通 関数名が長く読みにくい
日付・数値の自動フォーマット いずれもシリアル値がそのまま文字列化される。TEXT 関数との併用が必要
パフォーマンス 最も軽い 軽い やや重い(空白判定あり) 軽い

📋 どの結合方法を使う? 判断フロー

データテーブル
質問答え最適な手法
結合するセルは何個?2〜3個& 演算子
結合するセルは何個?4個以上(範囲で指定したい)→ 次の質問へ
区切り文字は必要?不要(ベタ結合でOK)CONCAT
区切り文字は必要?必要(カンマ、スラッシュ等)TEXTJOIN
空白セルを除外したい?はいTEXTJOIN(第2引数 TRUE)
Excel 2016以前との互換性が必要?はい& 演算子(全バージョン対応)

🔗 関連記事