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 を使うのが現代的です。
三つの連結方法の使い分け
文字列をつなぐ方法は三つあります。連結記号を使う方法、この関数を使う方法、区切り文字を指定できる関数を使う方法です。それぞれ得意な場面が違います。
連結記号を使う方法は、つなぐ数が少ないときにもっとも簡潔です。二つか三つなら、これが読みやすくなります。記号を並べるだけなので、書き方も覚えやすいものです。
この関数は、引数として並べる形です。連結記号と本質的には同じで、書き方が違うだけです。数式の見た目としては、括弧の中に並ぶので構造が分かりやすいという利点があります。範囲をまとめて渡せる版もありますが、区切り文字は入りません。
区切り文字を指定できる関数は、実務でもっとも使えます。区切り文字を一度指定するだけで、すべての要素の間に入ります。範囲をまとめて渡せるうえ、空白のセルを無視するかどうかも選べます。
判断としては、つなぐ数が二つか三つで区切りが不要なら連結記号、区切り文字が必要か数が多いなら三つ目の関数、と考えてください。この関数を選ぶ場面は、実際には限られます。→ TEXTJOIN関数の使い方
連結すると型が変わる
連結の結果は、必ず文字列になります。数値をつないでも、日付をつないでも、結果は文字列です。
これが問題になるのは、連結した結果を計算に使う場合です。文字列同士を足し算しようとしてもエラーになります。数値として使いたいなら、数値に変換する関数で包む必要があります。
もうひとつ、書式が失われる点も重要です。表示形式で桁区切りを入れていても、連結すると内部の値がそのまま出ます。日付も、内部の連続した数値が出てしまいます。
望む形式で連結したいなら、連結の前に文字列へ変換します。書式を指定できる関数を使えば、桁区切りや日付の形式を指定したうえで文字列にできます。→ TEXT関数の使い方
この一手間を忘れると、「日付をつないだら意味不明な数字になった」という状態になります。原因を知らないと悩みますが、仕組みが分かれば対処は簡単です。
検索キーを作るという用途
連結の実務的な用途として、複数の条件を組み合わせた検索キーを作る方法があります。
検索の関数は、条件を一つしか指定できません。商品コードと支店の組み合わせで単価を引きたい、というような二条件の検索は、そのままではできません。
そこで、マスタ側に結合列を作ります。商品コードと支店をつないだ値を持たせるのです。検索する側でも同じ形の値を作れば、一つのキーとして検索できます。
このとき、区切り文字を入れることが重要です。単純につなぐと、異なる組み合わせが同じ値になることがあります。「AB」と「1」をつないだ値と、「A」と「B1」をつないだ値は、区切りがなければ同じになります。ハイフンなどを挟んでおけば、この衝突を防げます。
結合列を作る方法は、数式の中で条件を連結する書き方より読みやすく、動作も軽くなります。検索のたびに連結の処理が走らないためです。
住所や氏名を組み立てる
帳票や宛名を作る場面では、分かれて持っている情報を組み立てる処理が必要になります。
氏名なら、姓と名の間に空白を入れます。全角の空白を使うか半角にするかは、用途によって決めてください。宛名では全角が一般的です。
住所なら、都道府県、市区町村、番地、建物名をつなぎます。ここで問題になるのが、建物名が空の場合です。単純につなぐと、末尾に余計な空白や区切りが残ります。
対処は二つあります。ひとつは、条件分岐で空欄を判定する方法。もうひとつは、空白を無視する設定がある関数を使う方法です。後者のほうが数式が短く、項目が増えても対応できます。
敬称を付ける場合も同様です。個人なら様、法人なら御中。区分によって変わるので、条件分岐か対応表で振り分けてから連結します。
こうした組み立ては、印刷用のシートで行うのが基本です。データのシートには分かれたまま持ち、表示のときに組み立てる。この分離ができると、集計も検索も素直に動きます。
表示用の文字列を組み立てる
帳票や通知の文面を数式で組み立てると、手作業の転記がなくなります。誤りも減ります。
たとえば、請求書の宛名を組み立てる場合。会社名、部署名、役職、氏名、敬称。これらを別々の列に持ち、表示のときに連結します。部署や役職が空の場合もあるので、空白を無視する連結を使うか、条件で分岐します。
案内文の一部を組み立てることもできます。「◯◯様の△△は□□円です」という文面なら、固定の文字と、参照するセルを交互に連結します。金額は桁区切りを入れた文字列に変換してから連結してください。
ファイル名を組み立てる用途もあります。日付と取引先名と種別をつないだ形です。日付は決まった形式に変換し、記号は使えないものを避けます。
こうした組み立ては、印刷用のシートで行うのが基本です。データのシートには分かれたまま持ち、表示のときに組み立てる。この分離ができていると、集計も検索も素直に動きます。
組み立てた結果をコピーして使う場合は、値として貼り付けてください。数式のままでは、別の場所に貼ったときに参照が崩れます。
連結の前に型を揃える
連結でもっとも多い失敗が、型の扱いです。数値と日付は、そのまま連結すると内部の表現が出てきます。
金額を連結する場合、表示形式で桁区切りを入れていても、連結には反映されません。書式を指定して文字列に変換してから連結してください。通貨記号や小数点以下の桁数も、変換のときに指定します。
日付は、内部的には連続した数値です。そのまま連結すると五桁の数字になります。年月日の形式を指定して文字列に変換する必要があります。
パーセントも同様です。内部では小数として保持されているため、そのまま連結すると小数が出ます。
論理値を連結すると、真偽を表す文字列になります。日本語で表示したい場合は、条件分岐で変換してから連結してください。
これらの変換を、連結の数式の中で毎回書くと読みにくくなります。変換済みの作業列を用意して、連結はその列を参照する形にすると、数式が短くなります。
型を揃える工程を挟むという発想は、連結に限らず表計算全般で有効です。取り込んだデータを整形してから使う、という順序を習慣にしてください。
よくある質問
Q. 連結記号とこの関数のどちらを使うべきですか
数が少なければ連結記号が簡潔です。この関数を選ぶ利点は、括弧で構造が分かりやすくなる程度です。
Q. 範囲をまとめて連結できますか
範囲を受け取れる版がありますが、区切り文字は入りません。区切りが必要なら別の関数を使ってください。
Q. 日付をつなぐと数字になります
内部の値が出ています。連結の前に文字列へ変換してください。
Q. 桁区切りが消えます
表示形式は連結の結果に反映されません。書式を指定して文字列に変換してください。
Q. 空欄があると余計な区切りが残ります
空白を無視する設定がある関数を使うか、条件分岐で判定してください。
Q. 連結した結果で計算できません
結果は文字列です。数値に変換する関数で包んでください。
Q. 改行を入れたいのですが
改行を表す関数を挟んでください。セルの表示で折り返しを有効にしないと一行に見えます。
Q. 逆に分割したいのですが
区切り文字で分割する関数があります。→ SPLIT関数の使い方
まとめ
- 書式は
=CONCATENATE(文字列1, 文字列2, ...) &とまったく同じ結果。2〜3個なら&が簡潔- 範囲を渡すと期待通りに動かない → TEXTJOIN を使う
- 日付・金額は TEXT で書式を指定してから連結する
- 改行は
CHAR(10)。セルの折り返し設定も必要 - ARRAYFORMULA の中では
&を使う
関連する関数
- TEXTJOIN — 区切り文字付き・空欄無視で範囲を連結
- TEXT — 日付や数値の書式を指定する
- SPLIT — 逆に文字列を分割する
- SUBSTITUTE — 文字列を置き換える
- 関数一覧に戻る
