CONCAT関数の基本的な使い方(スプレッドシート)
Googleスプレッドシートで複数のセルをまとめて結合したい。そんなとき便利なのがCONCAT関数です。「CONCATENATEとどう違うの?」「&演算子じゃダメなの?」と迷う方も多いですよね。
この記事では、CONCAT関数の構文から実務パターン、4つの結合方法の使い分けまで解説します。
読み方と語源
CONCAT関数の読み方は「コンカット」です。英語の Concatenate(連結する)の略が由来になっています。CONCATENATEの短縮版と覚えておくとわかりやすいですよ。
構文と引数の説明
CONCAT関数の構文はこちらです。
=CONCAT(値1, [値2, ...])
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 値1 | 必須 | 結合したい文字列、セル参照、またはセル範囲 |
| 値2, … | 省略可 | 追加で結合したい文字列やセル範囲 |
引数にはセル参照(A1)、セル範囲(A1:C1)、直接入力した文字列のいずれも指定できます。引数の個数に上限はありません。
基本的な書き方の例
A列に「姓」、B列に「名」が入っている場合を見てみましょう。
=CONCAT(A2, B2)
これで「山田太郎」のように姓名がつながります。
間にスペースを入れたいときはこう書きます。
=CONCAT(A2, " ", B2)
結果は「山田 太郎」になります。全角スペースを使いたい場合は半角を全角に変えてくださいね。
CONCATとCONCATENATEの違い(スプレッドシート)
範囲指定が最大の違い
CONCAT関数の最大の特徴は「セル範囲をまとめて指定できる」ことです。
A1に「東京都」、A2に「渋谷区」、A3に「1-2-3」と入っている場合を比べてみましょう。
CONCATENATE関数の場合(セルを1つずつ指定)
=CONCATENATE(A1, A2, A3)
CONCAT関数の場合(範囲で一括指定)
=CONCAT(A1:A3)
どちらも結果は「東京都渋谷区1-2-3」です。3つのセルならまだいいですが、10個、20個と増えたらどうでしょう。CONCAT関数なら範囲指定で済むので数式がスッキリしますよね。
CONCAT vs CONCATENATE 比較表
2つの関数の違いを表にまとめました。
| 比較項目 | CONCAT | CONCATENATE |
|---|---|---|
| セル範囲指定 | 対応(A1:C1 のように指定可) | 非対応(セルを1つずつ指定) |
| 引数の上限 | 制限なし | 最大30個 |
| 区切り文字の自動挿入 | 不可(手動で挿入) | 不可(手動で挿入) |
| 空白セルのスキップ | 不可 | 不可 |
| 位置づけ | CONCATENATEの後継 | レガシー(互換性のため残存) |
違いは「範囲指定ができるか」と「引数の上限」の2点です。新しく数式を書くならCONCATを選ぶのがおすすめですよ。
CONCATENATEはいつ使う?
既存のシートにCONCATENATEの数式が入っている場合は、無理に書き換える必要はありません。動作に問題はないので、新規作成時からCONCATに切り替えれば大丈夫です。CONCATENATEの詳しい使い方はこちらで解説しています。
4つの文字列結合方法の使い分け
スプレッドシートには文字列を結合する方法が4つあります。それぞれの特徴を比較してみましょう。
CONCAT・CONCATENATE・&・TEXTJOIN 比較表
| 方法 | セル範囲 | 区切り文字 | 空白スキップ | 引数上限 |
|---|---|---|---|---|
| CONCAT | 対応 | 手動 | 不可 | なし |
| CONCATENATE | 非対応 | 手動 | 不可 | 30 |
| & 演算子 | 非対応 | 手動 | 不可 | なし |
| TEXTJOIN | 対応 | 自動 | 対応 | 252 |
区切り文字の自動挿入と空白スキップに対応しているのはTEXTJOINだけです。
どれを使うか迷ったら ── 判断フロー
次の基準で選んでみてください。
- セルが2〜3個でシンプルに結合 → & 演算子
- セル範囲をまとめて区切りなしで結合 → CONCAT
- 区切り文字を自動で入れたい → TEXTJOIN
- 空白セルをスキップしたい → TEXTJOIN
- 古いExcelファイルとの互換性が必要 → CONCATENATE
実務では&演算子から始めて、範囲指定が必要になったらCONCAT、区切り文字や空白処理が必要になったらTEXTJOINへステップアップする流れが多いですよ。
CONCAT関数の実務パターン集
名前リストをひとつのセルにまとめる(範囲指定活用)
A1〜A5に「田中」「佐藤」「鈴木」「高橋」「山田」と入っているとします。これを1つのセルにまとめてみましょう。
=CONCAT(A1:A5)
結果は「田中佐藤鈴木高橋山田」です。範囲指定のおかげで数式は1行で済みます。
ただし区切り文字は入りません。カンマ区切りで「田中,佐藤,鈴木,…」のようにしたい場合はTEXTJOINを使います。
=TEXTJOIN(",", TRUE, A1:A5)
「区切り文字なしで範囲一括ならCONCAT、区切り文字ありならTEXTJOIN」と覚えてみてください。
複数列の値を一気に連結する
商品コードを生成するケースを見てみましょう。A列にカテゴリ、B列にサイズ、C列に番号が入っている場合です。
=CONCAT(A2, "-", B2, "-", C2)
A2が「ELC」、B2が「M」、C2が「001」なら、結果は「ELC-M-001」になります。セル参照と文字列を組み合わせるパターンです。
列が横に並んでいて区切りなしで良い場合はこう書けます。
=CONCAT(A2:C2)
結果は「ELCM001」です。範囲指定で3列をまとめて結合できるのがCONCATの強みですね。
日付や数値を文字列と組み合わせる
日付セルをそのままCONCATに渡すとシリアル値(数字の羅列)が表示されます。これはよくあるトラブルです。
A2に「2026/4/1」が入っている場合を見てみましょう。
=CONCAT("開始日:", A2)
→ 「開始日:46113」(シリアル値が出てしまう)
TEXT関数(数値を指定した書式の文字列に変換する関数)で変換してから結合しましょう。
=CONCAT("開始日:", TEXT(A2, "yyyy/m/d"))
→ 「開始日:2026/4/1」
パーセントや通貨も同様です。表示形式は結合時に失われるのでTEXT関数で明示的に指定してくださいね。
Excelとの互換性の注意点
GoogleスプレッドシートのCONCAT関数は、Excel 2019 / Microsoft 365のCONCAT関数とほぼ同じ動作をします。共有ファイルでも基本的に問題ありません。
ただし、以下の点に注意してください。
| 項目 | Googleスプレッドシート | Excel |
|---|---|---|
| CONCAT関数 | 使用可能 | Excel 2019以降で使用可能 |
| CONCATENATE関数 | 使用可能 | 全バージョンで使用可能 |
| TEXTJOIN関数 | 使用可能 | Excel 2019以降で使用可能 |
Excel 2016以前のユーザーとファイルを共有する場合、CONCAT関数は使えません。その場合はCONCATENATEか&演算子で書き直す必要があります。
互換性を意識するならCONCATENATEが安全
社内でExcelのバージョンが統一されていない場合は、CONCATENATE関数を使うほうが安全です。ただし、スプレッドシート単体で完結するならCONCATで問題ありません。
よくあるエラーと対処法
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| 数値がそのまま表示される | 日付やパーセントを直接渡した | TEXT関数で書式変換してから結合 |
| 余分なスペースが入る | 元のセルにスペースが含まれている | TRIM関数で前後の空白を除去 |
| 区切り文字が入らない | CONCAT関数には区切り文字の自動挿入機能がない | 手動で挟むか、TEXTJOINに切り替え |
| 空白セルを飛ばせない | CONCAT関数には空白スキップ機能がない | TEXTJOINの第2引数をTRUEにする |
| #VALUE! エラー | 結合結果が32,767文字を超えた | 結合する範囲を分割する |
まとめ
CONCAT関数はセル範囲をまとめて結合できる便利な関数です。CONCATENATEの後継として、新しく数式を書くときの第一選択になります。
おさらいです。
- セル範囲を一括指定できるのがCONCAT最大の強み
- CONCATENATEとの違いは「範囲指定」と「引数上限なし」の2点
- 2〜3個のシンプルな結合なら & 演算子 が手軽
- 区切り文字や空白スキップが必要なら TEXTJOIN へステップアップ
- 日付を結合するときは TEXT関数 で書式変換を忘れずに
まずはCONCATで範囲指定の便利さを体験してみてください。文字列操作の幅がぐっと広がりますよ。
文字列を結合したあとの加工には、LEFT関数で先頭から文字を取り出す方法もよく使います。結合後に余分なスペースが入ったときはTRIM関数で除去してみてくださいね。
