CONCATENATE関数の使い方|&演算子との違いと使い分け

執筆者:

カテゴリ:

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 — 文字列を置き換える
  • 関数一覧に戻る

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です