営業本部の売上報告書作成や、経理部門でのシステム移行、さらには全社的なDX推進の一環としてExcel研修の講師も担当しています。実務の最前線で何千、何万行というデータと向き合っていると、避けて通れないのが「バラバラの情報を一つにまとめる」作業です。
例えば、基幹システムから吐き出された「商品コード」と「ロット番号」を結合してユニークな管理IDを作ったり、顧客名簿の「姓」と「名」を結合して宛名を作成したりするシーンは、どの部署でも毎日発生しているはずです。こうした場面で、単に手入力を繰り返すのか、それとも関数を駆使して一瞬で終わらせるのか。この差が、残業時間の有無を決定づけると言っても過言ではありません。
今回は、数あるExcel関数の中でも特に利用頻度が高く、かつ奥が深い「文字列の結合」について、実務家としての知見を凝縮して解説します。
- CONCATENATE 文字列結合の基本構造と2つの記述ルール
- 経理や営業の現場で「&」演算子が優先される3つの理由
- 請求書発行システムに頼らない独自採番ルールを構築する手順
- 支店コードと勘定科目を紐付けて会計ソフト用インポートデータを作る
- 顧客リストの名寄せで発生する「空白セル」の制御技術
- 日付や金額の結合時に陥る「数値化エラー」の回避策
- Microsoft 365以降で使える「TEXTJOIN」への移行判断
- 結合したデータが反映されない時に疑うべき「表示形式」の罠
- Googleスプレッドシートへの共有で挙動が変わる関数の注意点
- 1,000行以上のデータを一括処理する際の動作負荷軽減策
- 実務の生産性を高めるためのデータ設計3原則
CONCATENATE 文字列結合の基本構造と2つの記述ルール
Excelで複数のセルに入力された情報を繋ぎ合わせるには、大きく分けて「CONCATENATE(コンカティネート)関数」を使う方法と、「&(アンパサンド)」演算子を使う方法の2種類があります。
CONCATENATE関数の構文と基本的な書き方
CONCATENATE関数は、結合したい文字列やセル参照をカンマで区切って指定する関数です。
=CONCATENATE(文字列1, [文字列2], ...)
筆者が社内研修で教えている際、まず最初に説明するのは「文字列を直接指定する場合は必ずダブルクォーテーション(”)で囲む」という鉄則です。これを忘れてエラーを出す初心者が非常に多いため、徹底して伝えています。
セル参照を組み合わせた動的な文字列生成
実務では、固定の文字列とセル内の値を組み合わせるケースがほとんどです。例えば、A2セルに「営業一部」、B2セルに「田中」と入力されている場合、以下のような数式を組みます。
=CONCATENATE(A2, ":", B2, "様")
これで「営業一部:田中様」という文字列が生成されます。
複数の引数を指定する際の注意点
CONCATENATE関数には最大255個の引数を指定できます。しかし、実務で255個も繋げることはまずありません。せいぜい10個程度でしょう。引数が多くなりすぎると、数式の可読性が下がり、後からメンテナンスをする担当者(あるいは1ヶ月後の自分)が苦労することになります。

経理や営業の現場で「&」演算子が優先される3つの理由
実は、実務に慣れているベテランほどCONCATENATE関数よりも「&」を使います。筆者も、自身の業務では9割以上「&」を使用しています。
数式の短縮による入力ミスの削減
「&」を使えば、関数名を入力する手間が省けます。
=A2 & B2
これだけで済みます。CONCATENATE関数の場合、スペルミスで「CONCATNATE」などと打ってしまうリスクがありますが、「&」ならその心配はありません。
数式バーでの可視性とメンテナンス性
研修で教えていると、「CONCATENATE関数の方が何をしているか分かりやすい」という声も聞きますが、複雑な条件分岐(IF関数など)と組み合わせる場合、関数が何重にもなると「( )」の数が多くなりすぎて収拾がつかなくなります。
=IF(A2<>"", A2 & "様", "")
このように、「&」を使うと数式全体がスッキリし、構造を把握しやすくなるのが大きなメリットです。
結合スピードと作業効率の向上
ショートカットキーと組み合わせる際も、「&」は強力です。Shiftキーを押しながら「6」を押すだけで入力できるため、マウスを持たずにキーボードだけで爆速で数式を組み上げる実務家にとって、この1ステップの差は積み重なると巨大な時間差になります。
ポイント: Microsoft 365やExcel 2019以降では、CONCATENATE関数の後継として「CONCAT関数」が登場しました。CONCAT関数は「=CONCAT(A1:C1)」のようにセル範囲をまとめて指定できるため、大量のセルを結合する場合はこちらが圧倒的に便利です。
請求書発行システムに頼らない独自採番ルールを構築する手順
営業管理の現場では、既存のシステムでは対応できない「独自の管理番号」を振りたいという要望がよくあります。ここで文字列結合のスキルが火を吹きます。
営業部で使われる「日付+担当+連番」の採番術
例えば、「20240513-営業二部-001」という番号を作りたい場合、以下のような表構成にします。
- A列:成約日(2024/05/13)
- B列:部署名(営業二部)
- C列:当日連番(1)
これをそのまま繋げると日付がシリアル値になってしまうため、工夫が必要です。
TEXT関数を組み合わせた書式制御
初心者がつまずきやすいポイントの筆頭がこれです。日付セル(A2)をそのまま「&」で繋ぐと、「45425営業二部1」のように、日付が5桁の数字(シリアル値)に化けてしまいます。経理の現場でも、この設定を忘れて集計がずれるケースをよく見かけます。これを防ぐにはTEXT関数をネストします。
=TEXT(A2, "yyyymmdd") & "-" & B2 & "-" & TEXT(C2, "000")
ゼロ埋め処理(パディング)の実務的意味
上記の「TEXT(C2, “000”)」の部分は、連番を「001」「002」のように3桁で固定する処理です。これをやらないと、並べ替え(ソート)をした際に「10」が「1」の次ではなく「2」の前に来てしまうなど、データ管理上の致命的な問題を引き起こします。

支店コードと勘定科目を紐付けて会計ソフト用インポートデータを作る
経理部門では、異なるシステム間でデータを移行する際、特定の形式に合わせて文字列を加工する作業が頻繁に発生します。
勘定奉行や弥生会計へのインポート用CSV作成
多くの会計ソフトでは、インポート時に「部門コード+勘定科目コード」という形式を要求されます。例えば、総務部の部門コードが「100」、旅費交通費の科目コードが「5141」の場合、これを「100-5141」としてインポートファイルに記載する必要があります。
実務事例:1,000件の経費データを1分で加工する
筆者の経験では、各社員から提出されたExcelの経費精算書をマクロで吸い上げ、最後にこの結合処理を行って仕訳データを作成していました。
=A2 & "-" & B2
A2に部門、B2に科目コードを入れた状態でこの数式を1,000行分オートフィルするだけで、システムが読み込める形式が完成します。
エラーを未然に防ぐTRIM関数の活用
システムから抽出したデータには、目に見えない「半角スペース」が末尾に紛れ込んでいることがよくあります。これが原因で、結合した結果が「100 -5141」のようにスペースを含んでしまい、インポートエラーになるのです。
=TRIM(A2) & "-" & TRIM(B2)
実務では、このようにTRIM関数を挟んでおくのが、余計なトラブルを避けるための「プロの作法」です。
顧客リストの名寄せで発生する「空白セル」の制御技術
総務部や人事部で扱う顧客リストや社員名簿では、項目の有無によって結合結果が不自然になることがあります。
住所の結合における建物名の有無への対応
住所録を作成する際、A列(都道府県)、B列(市区町村)、C列(番地)、D列(建物名)を結合するとします。D列が空欄の場合、最後に余計なスペースが残ったり、カンマ区切りの場合はカンマだけが残ったりします。
=A2 & B2 & C2 & IF(D2<>"", " " & D2, "")
このようにIF関数を使って、「D列に値がある場合のみスペースと建物名を足す」という条件分岐を加えます。
実務事例:セミナー参加者への案内メール作成
研修で教えていると、「欠席者にだけ特定のメッセージを付け加えたい」という相談をよく受けます。
=A2 & "様、" & IF(E2="欠席", "次回のご参加をお待ちしております。", "当日はよろしくお願いします。")
単なる文字列結合に「条件」を付加することで、一斉送信メールの内容をパーソナライズできるようになり、業務の質が格段に上がります。
重複チェック用の一時キー作成
名寄せ(データの重複排除)を行う際も文字列結合は必須です。「氏名 & 生年月日 & 電話番号」を結合した作業用列を作ることで、全く同じ項目を持つデータ、つまり重複データを簡単に見つけ出すことができます。COUNTIF関数と組み合わせれば、重複している行にフラグを立てることも容易です。

日付や金額の結合時に陥る「数値化エラー」の回避策
文字列結合において、数値や日付を扱う際は、Excelの「見た目」と「内部データ」の違いを理解しておく必要があります。
なぜ「¥1,000」が「1000」になってしまうのか
B2セルに通貨形式で「¥1,200」と表示されていても、数式内でそのまま結合すると「単価は1200円です」となります。カンマ(,)や円記号(¥)は表示形式による装飾であり、データそのものではないからです。
実務で役立つ「¥」記号とカンマの挿入法
これを解決するには、前述のTEXT関数を使いこなす必要があります。
="合計金額は" & TEXT(B2, "#,##0") & "円(税込)です"
この「”#,##0″」という書式設定を覚えているかどうかで、資料の読みやすさが大きく変わります。経理部から他部署へ送る通知資料などでは、こうした細かい気配りが信頼に繋がります。
日付の曜日を自動で付け加えるテクニック
筆者が実務で重宝しているのが、日付の横に自動で曜日を振る設定です。
=TEXT(A2, "yyyy/mm/dd(aaa)")
「2024/05/13(月)」という形式を一発で作れます。これを手入力している新人がいたら、すぐにこの関数を教えてあげてください。それだけで彼の作業ミスはゼロになります。
注意点: TEXT関数で加工した結果は「文字列」になります。そのため、結合した後のセルを対象にSUM関数で合計を出そうとしても「0」になってしまいます。計算に使いたい場合は、結合用の列と計算用の列を分けるのが鉄則です。
Microsoft 365以降で使える「TEXTJOIN」への移行判断
これまでの文字列結合の常識を覆したのが、Excel 2019/365で追加された「TEXTJOIN(テキストジョイン)関数」です。
区切り文字を一度で指定できる圧倒的メリット
例えば、5つのセルの間にすべて「 / 」を入れたい場合、これまでは「A2 & ” / ” & B2 & ” / ” …」と書く必要がありました。
=TEXTJOIN(" / ", TRUE, A2:E2)
これだけで済むのです。第1引数に区切り文字、第2引数に「空のセルを無視するかどうか」を指定できます。
実務事例:プロジェクトメンバーの一覧表示
プロジェクト管理表で、横に並んだ担当者名を一つのセルにまとめたいとき、TEXTJOINなら範囲指定(A2:F2など)ができるため、メンバーの増減にも柔軟に対応できます。
筆者の研修でも、この関数を紹介すると「今までの苦労は何だったのか」と感動される方が非常に多い、まさに「時短の神関数」です。
古いバージョンのExcelとの互換性問題
ただし、注意点もあります。TEXTJOINは古いExcel(2016以前)では動きません。他社に送るファイルや、社内の環境が統一されていない場合は、あえて古い「&」や「CONCATENATE」を使う勇気も必要です。実務家としては、相手の環境を想像してツールを選ぶのも重要なスキルです。

結合したデータが反映されない時に疑うべき「表示形式」の罠
「数式を入れたのに、結果ではなく数式がそのままセルに表示される」というトラブル。これは初心者が必ず一度は通る道です。
セルが「文字列」形式になっている場合
セルの表示形式が「文字列」に設定されていると、Excelはそのセルに入力されたものをすべて「ただのテキスト」として扱い、関数として計算してくれません。
トラブル解決の2ステップ
- セルの表示形式を「標準」に戻す
- セルを選択した状態で「F2」キーを押し、そのまま「Enter」を押して再確定する
これだけで解決します。一括で直したい場合は、列を選択して「データ」タブの「区切り位置」ウィザードをそのまま完了させるという裏技もあります。
再計算設定が「手動」になっていないか
大量のデータを扱う部署(特に経営企画や経理)では、動作を軽くするために計算設定を「手動」にしていることがあります。この場合、数式をコピーしても値が変わりません。「F9」キーを押して再計算するか、設定を確認しましょう。
Googleスプレッドシートへの共有で挙動が変わる関数の注意点
最近は社外とのやり取りでGoogleスプレッドシートを使う機会も増えました。Excelの文字列結合は基本的にスプレッドシートでも動きますが、一部挙動が異なります。
ARRAYFORMULA関数との組み合わせ
Googleスプレッドシート最大の強みは、ARRAYFORMULA関数を使って「1行の数式で1,000行分を結合する」といった処理ができる点です。
=ARRAYFORMULA(A2:A1000 & B2:B1000)
これをExcelに持っていくと(最新の動的配列対応版Excelを除き)エラーになるか、最初の1行しか表示されません。
実務でのファイル共用ルール
スプレッドシートとExcelを頻繁に行き来させる実務では、あえて「スプレッドシート固有の関数」は使わず、古典的な「&」での結合に留めておくのが無難です。これが、共同作業を円滑に進めるための「現場の知恵」です。
1,000行以上のデータを一括処理する際の動作負荷軽減策
文字列を結合する数式が何万行にも及ぶと、Excelの動作が目に見えて重くなります。特に、複雑なTEXT関数やIF関数をネストしている場合は顕著です。
値貼り付けによる数式の解除
結合が完了し、それ以上データが変わる予定がないのであれば、範囲を選択して「コピー」→「値として貼り付け」を行い、数式を消してしまいましょう。これにより、ファイルサイズが劇的に軽くなり、スクロールの引っ掛かりも解消されます。
作業列を一時的に非表示にする
結合の元データとなっている列を削除すると、当然エラーになります。データを消したくないけれど画面をスッキリさせたい場合は、列を「非表示」にするか、グループ化機能を使って折り畳んでおきましょう。
VBA(マクロ)による一括処理の検討
毎日数万行の結合作業が発生するなら、関数ではなくマクロで処理することを検討すべきフェーズです。
Range("C1:C10000").Value = [A1:A10000 & B1:B10000]
VBAを使えば、メモリ消費を抑えながら高速に処理を完結できます。
実務の生産性を高めるためのデータ設計3原則
最後に、これまで15年間にわたってExcel実務と教育に携わってきた経験から、明日から使える「データ設計の考え方」を3つお伝えします。
1. 結合は「出力」の直前で行う
データはバラバラの状態で持っておく方が、集計や分析には有利です。結合はあくまで「宛名ラベルを作る」「システムにインポートする」といった、最後のアウトプットの段階で行うようにしましょう。
2. 結合用の「作業列」を恐れない
1つの長い数式ですべてを解決しようとせず、適度に作業列を分けてステップごとに結合していく方が、ミスに気付きやすく、他人が見た時の解読スピードも上がります。
3. 公式ドキュメントを辞書代わりにする
Excelの機能は日々進化しています。自分の知識が最新かどうか、時折Microsoftの公式情報をチェックする習慣をつけましょう。
参照: Microsoft公式: CONCATENATE関数
文字列結合は、Excelスキルの土台となる非常に重要なテクニックです。単に文字を繋ぐだけでなく、今回紹介したTEXT関数との組み合わせや、TEXTJOINへの移行、そして実務上のトラブルシューティングをマスターすることで、あなたの事務作業のスピードは確実に、そして劇的に向上します。
まずは今日作成している報告書の、手入力している箇所を1つ見つけて、関数での結合に置き換えることから始めてみてください。その積み重ねが、大きな業務効率化へと繋がっていきます。



コメント