CONCAT関数の基本的な使い方(スプレッドシート)
Googleスプレッドシートで2つのセルの値をつなげたい。そんなとき使えるのがCONCAT関数です。「CONCATENATEとどう違うの?」「&演算子じゃダメなの?」と迷う方も多いですよね。
先に大事な注意点をお伝えします。GoogleスプレッドシートのCONCAT関数は、結合できる値が2つだけです。ExcelのCONCAT関数(範囲指定OK・引数無制限)とは仕様がまったく違うので、Excelの感覚で使うとエラーになります。
この記事では、CONCAT関数の正しい構文と、CONCATENATE・&演算子・TEXTJOINとの使い分けを解説します。
読み方と語源
CONCAT関数の読み方は「コンカット」です。英語の Concatenate(連結する)の略が由来になっています。CONCATENATEの短縮版と覚えておくとわかりやすいですよ。
構文と引数の説明
CONCAT関数の構文はこちらです。
=CONCAT(値1, 値2)
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 値1 | 必須 | 結合したい文字列・数値・セル参照 |
| 値2 | 必須 | 結合したいもう1つの文字列・数値・セル参照 |
引数はちょうど2個です。3個以上を渡したり、A1:A5 のようなセル範囲を1つの引数として結合したりすることはできません。エラーになります。
WARNING
ExcelのCONCAT関数(Excel 2019以降)は「範囲指定OK・引数の個数制限なし」ですが、これはExcelだけの仕様です。GoogleスプレッドシートのCONCATは引数2個固定で、実質的に
&演算子と同じ働きをします。Web上の解説記事はExcelの仕様を前提にしたものが多いので注意してくださいね。
基本的な書き方の例
A列に「姓」、B列に「名」が入っている場合を見てみましょう。
=CONCAT(A2, B2)
これで「山田太郎」のように姓名がつながります。
間にスペースを入れたいときは、引数が3つ必要になるためCONCATでは書けません。& 演算子かCONCATENATEを使います。
=A2 & " " & B2
=CONCATENATE(A2, " ", B2)
結果はどちらも「山田 太郎」になります。このように「3つ以上をつなげたくなったらCONCAT卒業」と覚えておくとシンプルですよ。
CONCATとCONCATENATEの違い(スプレッドシート)
結合できる個数が最大の違い
Googleスプレッドシートでは、CONCATENATEのほうが高機能です。CONCATENATEは引数をいくつでも指定でき、セル範囲もまとめて渡せます。
A1に「東京都」、A2に「渋谷区」、A3に「1-2-3」と入っている場合を比べてみましょう。
CONCATENATE関数の場合(範囲でも個別でもOK)
=CONCATENATE(A1:A3)
=CONCATENATE(A1, A2, A3)
どちらも結果は「東京都渋谷区1-2-3」です。
CONCAT関数の場合(2個までしか結合できない)
=CONCAT(A1, A2) → 「東京都渋谷区」(2個なら結合できる)
=CONCAT(A1:A3) → エラー(範囲の一括結合は不可)
=CONCAT(A1, A2, A3) → エラー(引数3個は不可)
「CONCATは短い名前だから新しくて高機能なはず」と思いがちですが、スプレッドシートでは逆です。注意してくださいね。
CONCAT vs CONCATENATE 比較表
2つの関数の違いを表にまとめました。
| 比較項目 | CONCAT | CONCATENATE |
|---|---|---|
| 引数の個数 | 2個固定 | 制限なし |
| セル範囲の一括結合 | 非対応 | 対応(A1:A3 のように指定可) |
| 区切り文字の自動挿入 | 不可(手動で挿入) | 不可(手動で挿入) |
| 空白セルのスキップ | 不可 | 不可 |
| 位置づけ | 2値結合の簡易関数 | 標準の文字列結合関数 |
3つ以上の値や範囲を結合するならCONCATENATE関数、区切り文字が必要なら後述のTEXTJOIN関数を選びましょう。
4つの文字列結合方法の使い分け
スプレッドシートには文字列を結合する方法が主に4つあります。それぞれの特徴を比較してみましょう。
CONCAT・CONCATENATE・&・TEXTJOIN 比較表
| 方法 | 結合できる個数 | セル範囲 | 区切り文字 | 空白スキップ |
|---|---|---|---|---|
| CONCAT | 2個固定 | 非対応 | 手動 | 不可 |
| CONCATENATE | 制限なし | 対応 | 手動 | 不可 |
| & 演算子 | 制限なし | 非対応 | 手動 | 不可 |
| TEXTJOIN | 制限なし | 対応 | 自動 | 対応 |
区切り文字の自動挿入と空白スキップに対応しているのはTEXTJOIN関数だけです。
どれを使うか迷ったら ── 判断フロー
次の基準で選んでみてください。
- セルが2〜3個でシンプルに結合 → & 演算子
- セル範囲をまとめて区切りなしで結合 → CONCATENATE
- 区切り文字を自動で入れたい → TEXTJOIN
- 空白セルをスキップしたい → TEXTJOIN
- カンマ区切りの1行テキストを作りたい → TEXTJOIN または JOIN関数
正直なところ、スプレッドシートでCONCATを積極的に選ぶ場面はほとんどありません。& 演算子のほうが短く書けるからです。CONCATは「Excelから移行した数式に入っていたら意味がわかる」程度に押さえておけば十分ですよ。
CONCAT関数まわりの実務パターン集
名前リストをひとつのセルにまとめる
A1〜A5に「田中」「佐藤」「鈴木」「高橋」「山田」と入っているとします。これを1つのセルにまとめてみましょう。CONCATでは範囲を渡せないので、CONCATENATEかTEXTJOINを使います。
=CONCATENATE(A1:A5)
結果は「田中佐藤鈴木高橋山田」です。
カンマ区切りで「田中,佐藤,鈴木,…」のようにしたい場合はTEXTJOINを使います。
=TEXTJOIN(",", TRUE, A1:A5)
「区切り文字なしで範囲一括ならCONCATENATE、区切り文字ありならTEXTJOIN」と覚えてみてください。
複数列の値を一気に連結する
商品コードを生成するケースを見てみましょう。A列にカテゴリ、B列にサイズ、C列に番号が入っている場合です。区切り文字を挟むと引数が5個になるため、CONCATでは書けません。
=CONCATENATE(A2, "-", B2, "-", C2)
=A2 & "-" & B2 & "-" & C2
A2が「ELC」、B2が「M」、C2が「001」なら、結果はどちらも「ELC-M-001」になります。
区切りなしで良い場合は範囲指定でこう書けます。
=CONCATENATE(A2:C2)
結果は「ELCM001」です。
日付や数値を文字列と組み合わせる
日付セルをそのままCONCATに渡すとシリアル値(数字の羅列)が表示されます。これはよくあるトラブルです。
A2に「2026/4/1」が入っている場合を見てみましょう。
=CONCAT("開始日:", A2)
→ 「開始日:46113」(シリアル値が出てしまう)
TEXT関数(数値を指定した書式の文字列に変換する関数)で変換してから結合しましょう。引数2個に収まるので、これはCONCATでも書けるパターンです。
=CONCAT("開始日:", TEXT(A2, "yyyy/m/d"))
→ 「開始日:2026/4/1」
パーセントや通貨も同様です。表示形式は結合時に失われるのでTEXT関数で明示的に指定してくださいね。
Excelとの互換性とよくあるエラー
Excelとの仕様の違い
CONCAT関数は、GoogleスプレッドシートとExcelで同名なのに仕様が大きく異なる珍しい関数です。
| 項目 | Googleスプレッドシート | Excel(2019以降) |
|---|---|---|
| 引数の個数 | 2個固定 | 最大253個 |
| セル範囲の一括結合 | 非対応 | 対応(=CONCAT(A1:A10) が可能) |
| 位置づけ | &演算子の関数版 | CONCATENATEの後継 |
ExcelからスプレッドシートにファイルをインポートしたときにCONCATの数式が入っていると、引数3個以上や範囲指定の部分がエラーになります。その場合はCONCATENATEかTEXTJOINに書き換えてください。
両方で動く数式にしたいなら
ExcelとGoogleスプレッドシートの両方で同じように動かしたい場合は、CONCATENATE関数(個別セル指定)か
&演算子で書くのが安全です。どちらも両環境で同じ動作をします。
よくあるエラーと対処法
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| 引数3個以上でエラー | スプレッドシートのCONCATは2個固定 | CONCATENATEか&演算子に書き換え |
| 範囲指定(A1:A5)でエラー | CONCATは範囲の一括結合に非対応 | CONCATENATEかTEXTJOINに書き換え |
| 数値がそのまま表示される | 日付やパーセントを直接渡した | TEXT関数で書式変換してから結合 |
| 余分なスペースが入る | 元のセルにスペースが含まれている | TRIM関数で前後の空白を除去 |
| 区切り文字が入らない | CONCATに区切り文字の自動挿入機能はない | 手動で挟むか、TEXTJOINに切り替え |
まとめ
GoogleスプレッドシートのCONCAT関数は、2つの値を結合するシンプルな関数です。ExcelのCONCATとは別物と考えてください。
おさらいです。
- スプレッドシートのCONCATは引数2個固定・セル範囲非対応
- ExcelのCONCAT(範囲指定OK・引数無制限)とは仕様が異なるので要注意
- 3つ以上の値や範囲をまとめるなら CONCATENATE
- 区切り文字や空白スキップが必要なら TEXTJOIN
- 2〜3個のシンプルな結合なら & 演算子 が手軽
- 日付を結合するときは TEXT関数 で書式変換を忘れずに
範囲をまとめて結合したい場面では、CONCATENATE関数やTEXTJOIN関数を使い分けてみてください。文字列を結合したあとの加工には、LEFT関数で先頭から文字を取り出す方法もよく使います。

