CONCATENATEは、複数の文字列をつなげる関数です。
「姓」と「名」を結合してフルネームにする、住所の各項目をつなげる、といった処理に使います。
ただし実務では、& 演算子か TEXTJOIN を使うほうが多いのが実情です。この記事では使い分けまで整理します。
書式
=CONCATENATE(文字列1, [文字列2], ...)
基本の使い方
| A | B | |
|---|---|---|
| 1 | 山田 | 太郎 |
=CONCATENATE(A1, B1) → 山田太郎
=CONCATENATE(A1, " ", B1) → 山田 太郎
区切り文字を入れたいときは、間に文字列を挟みます。
&演算子との違い
同じことが & でも書けます。
=A1 & B1
=A1 & " " & B1
結果はまったく同じです。 どちらを使うかは好みの問題ですが、実務では次のような使い分けが一般的です。
| CONCATENATE | & |
|
|---|---|---|
| 短い連結 | 冗長 | 簡潔 |
| 項目が多い | 見やすい | & だらけで読みにくい |
| 数式内での可読性 | 括弧が必要 | 直感的 |
2〜3個なら &、それ以上なら関数、というのが目安です。
範囲を渡したときの挙動
ここが最大の注意点です。
=CONCATENATE(A1:A5)
この書き方は、期待通りに動きません。 スプレッドシートでは範囲を渡すと、最初のセルだけ、または配列として展開されるなど、環境によって挙動が不安定です。
範囲をまとめて連結したいなら、TEXTJOIN を使ってください。
=TEXTJOIN(", ", TRUE, A1:A5)
区切り文字を指定でき、空欄を無視でき、範囲をそのまま渡せます。CONCATENATEの上位互換と考えて構いません。
CONCATとの違い
CONCAT という似た関数もあります。
=CONCAT(A1, B1)
引数を2つしか取れません。 3つ以上つなげたい場合はCONCATENATEか & を使ってください。
Excelでは CONCAT が範囲に対応していますが、スプレッドシートの CONCAT は2引数専用です。同名でも挙動が違うので注意してください。
日付や数値が崩れる原因
日付をそのまま連結すると、内部の数値(シリアル値)が出てしまいます。
=CONCATENATE("更新日:", A1) → 更新日:46113
TEXT で書式を指定してから連結してください。
=CONCATENATE("更新日:", TEXT(A1, "yyyy/m/d")) → 更新日:2026/4/1
金額も同様です。
=CONCATENATE("合計:", TEXT(A1, "¥#,##0")) → 合計:¥1,234,567
桁区切りやゼロ埋めは、連結すると消えます。 表示形式はセルの設定であって、値そのものではないためです。ここは実務で頻繁に起きるトラブルです。
改行を入れる
CHAR(10) が改行です。
=CONCATENATE(A1, CHAR(10), B1)
セルの書式で「折り返し」を有効にしないと、改行が見えません。 数式は正しくても表示されないので、書式を確認してください。
全行に適用する
ARRAYFORMULA と組み合わせられますが、& のほうが確実に動きます。
=ARRAYFORMULA(IF(A2:A="", "", A2:A & " " & B2:B))
CONCATENATEは配列に対する挙動が安定しないため、ARRAYFORMULA の中では & を使ってください。
使い分けのまとめ
| やりたいこと | 使うもの |
|---|---|
| 2〜3個のセルをつなぐ | & |
| 項目が多く、可読性を上げたい | CONCATENATE |
| 範囲をまとめて連結 | TEXTJOIN |
| 区切り文字を入れて連結 | TEXTJOIN |
| 空欄を飛ばして連結 | TEXTJOIN |
| ARRAYFORMULA の中 | & |
迷ったら TEXTJOIN を検討してください。 CONCATENATEでしかできないことは、実質ありません。
Excelとの違い
CONCATENATE・&・TEXTJOIN はすべて共通です。
違いは CONCAT です。
| Excel | スプレッドシート | |
|---|---|---|
CONCAT の引数 |
範囲も可 | 2つまで |
CONCATENATE |
非推奨(CONCAT 推奨) |
現役 |
ExcelではCONCATENATEは互換性のために残されている扱いですが、スプレッドシートでは普通に使えます。ただしどちらの環境でも、& か TEXTJOIN を使うのが現代的です。
まとめ
- – 書式は
=CONCATENATE(文字列1, 文字列2, ...) - –
&とまったく同じ結果。2〜3個なら&が簡潔 - – 範囲を渡すと期待通りに動かない → TEXTJOIN を使う
- – 日付・金額は TEXT で書式を指定してから連結する
- – 改行は
CHAR(10)。セルの折り返し設定も必要 - – ARRAYFORMULA の中では
&を使う
関連する関数
- – TEXTJOIN — 区切り文字付き・空欄無視で範囲を連結
- – TEXT — 日付や数値の書式を指定する
- – SPLIT — 逆に文字列を分割する
- – SUBSTITUTE — 文字列を置き換える
- – 関数一覧に戻る
コメントを残す