🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

ExcelのCONCAT関数 — 範囲をまるごと飲み込む CONCATENATE の後継

|

ExcelのCONCAT関数 — 範囲をまるごと飲み込む CONCATENATE の後継

要点CONCATCONCATENATE の現代的な置き換えです。先代にできなかった 唯一のこと——範囲をまるごと一度に取る =CONCAT(A1:A10)。セルを A1, A2, A3, … と手で並べる必要がありません。一方でしないこと——区切り文字を入れる、空白を飛ばす。 ただ文字をくっつけるだけです。構文は =CONCAT(テキスト1, [テキスト2], …)。区切り 文字が要る、または空白を飛ばしたいなら、CONCAT& で継ぎ接ぎせず、最初から TEXTJOIN へ。Excel 365 / 2019 以降。

=CONCAT(A1:A10)
=CONCAT(A2, " — ", B2)

CONCATENATE は何十年も存在し、今も動きます——が、Microsoft 自身のドキュメントが 「互換性のために残されている」関数と呼び、CONCAT に置き換えられたとしています。 日常の違いは小さいが本物です。CONCAT は1つの参照で範囲をまるごと飲み込み、 CONCATENATE は各セルを個別に指させます。

この記事でわかること

  • CONCATENATE に対する唯一の本当の改善——セルごとではなく範囲
  • なぜ CONCATENATE はもう書かなくてよい過去の遺物なのか
  • CONCAT が2次元範囲をどう読むか——意外な「行優先」
  • 数値書式の罠(日付がシリアル値に、通貨が記号を失う)
  • CONCAT を飛ばして TEXTJOIN を使うべき場面

考え方の軸:ついに範囲を取る CONCATENATE

CONCATENATE はいつも少し滑稽でした。10個のセルを結合するのに =CONCATENATE(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) と打つ。CONCAT はまさに そこを直します——範囲を受け取るので、同じ結合が =CONCAT(A1:A10)。あとは同じ。値の あいだに区切りはなく、空白セルは見えるものを何も足しません(飛ばすも何も——空白は 文字を1つも足さない)。

' 旧来——各セルを手で列挙:
=CONCATENATE(A1, A2, A3, A4, A5)

' CONCAT——範囲1つ:
=CONCAT(A1:A5)

すべての鍵となるルール:区切りが無い=たいてい欲しいのは TEXTJOIN

ここが多くの人の判断を誤らせます。CONCAT は値のあいだに何も入れずにくっつけます。 カンマ・空白・改行を値のあいだに入れたい瞬間——または空白を飛ばしたい瞬間——CONCAT の守備範囲を越えています。人は区切りを後付けしようとします。

=CONCAT(A2, ", ", B2, ", ", C2)   ' 数セルなら動くが、区切りをまた手で打っている
                                  ' ——昔の苦痛

…これは名前を変えた CONCATENATE です。答えに区切りが絡むなら、 TEXTJOIN が引数1つでやり (=TEXTJOIN(", ", TRUE, A2:C2))、空白も飛ばします。CONCAT は本物の「区切りなしで くっつける」場合だけに——部品から ID を組む、コードを組み立てる、値に接頭辞を貼る。

CONCATが2次元範囲を読む順:行優先

長方形の範囲を CONCAT に渡すと、読む順が意外です。列ごとではなく、行ごと(左から 右、上から下)に進みます。

' A1=a  B1=b
' A2=c  B2=d
=CONCAT(A1:B2)   ' -> "abcd"   (a, b, それから c, d——まず各行を横に)

"acbd" を期待したなら、それが罠です。順序が大事な場面では、ブロックの読み順に頼らず、 並びを明示的に書き出しましょう。

数値書式の罠

CONCAT画面表示ではなく内部の値を連結します。日付はシリアル値、通貨は ¥ と 小数を失い、パーセントは生の小数になります。

=CONCAT("期限: ", B2)            ' -> "期限: 46204"   B2 が日付なら
=CONCAT("期限: ", TEXT(B2, "yyyy/mm/dd"))   ' -> "期限: 2026/06/17"

数値・日付・通貨が CONCAT(や TEXTJOIN&)に入るときは必ず、明示的な書式の TEXT() で包みます。連結の出力が「おかしく見える」最も多い原因です。同じ1セルあたり 32,767文字の上限が効き、あふれると #VALUE! を返します。

判断:CONCAT・CONCATENATE・TEXTJOIN のどれ?

新しい式で CONCATENATE を書くのはやめましょう——CONCAT はその全部をこなし、範囲も 取ります。残る2つのうち——区切りなしなら CONCAT区切りまたは空白スキップが 欲しい瞬間に TEXTJOIN。決めることはこれだけ。避けるべき失敗は、CONCAT に手を伸ばし、 &SUBSTITUTE で支えて、TEXTJOIN がただでくれるものを作り直すことです。

ExcelMaster の使いどころ

「これをつなげて」の依頼の多くは、隠れた書式ルールを含みます:カテゴリ・ハイフン・ ゼロ埋めの番号から SKU を組んでExcelMaster は正しい関数を選び——生の結合なら CONCAT、区切りや空白スキップが絡むなら TEXTJOIN——数値と日付を正しい TEXT() 書式 で包み、あなたの説明から式を書きます。出力がどう読めるべきかをあなたが言い、機構は 任せられます。

よくある質問

CONCATとCONCATENATEの違いは?

CONCAT は範囲をまるごと取れます(=CONCAT(A1:A10))。CONCATENATE は各セルを手で 列挙させます。それ以外は同じ——区切りなし、空白スキップなし。CONCATENATE は互換性の ためだけに残っているので、新しい作業では CONCAT を使います。

Excelでセルの範囲を連結するには?

=CONCAT(A1:A10) を使います。値のあいだに区切りが要る、または空白セルを飛ばしたい なら、代わりに =TEXTJOIN(", ", TRUE, A1:A10) を——CONCAT には区切りの選択肢が ありません。

CONCATで区切り文字を入れるには?

きれいにはできません——CONCAT は値のあいだに何も入れずにくっつけます。区切りを手で 打つ(=CONCAT(A2, ", ", B2))のは数セルなら動きますが、目的を外しています。区切り つきのリストには TEXTJOIN を。

CONCATで日付が数値になるのはなぜ?

CONCAT は表示書式ではなく内部の値を連結するため、日付がシリアル値で現れます。TEXT で包みます:=CONCAT("期限: ", TEXT(B2, "yyyy/mm/dd"))

CONCATはExcel 2016で使える?

使えません。CONCAT は Excel 2019 / 365 から。2016では CONCATENATE& 演算子に 戻ります。

検証環境

検証環境: Excel 365(Windows 11)— 最終確認 2026-06-17。

関連ガイド: ExcelのTEXTJOIN関数 · ExcelのTEXTSPLIT関数 · ExcelのFILTER関数 · VBAの文字列連結