Excelで重複を見つける方法: 究極のステップバイステップガイド
作成者: Iron Software
Excelで2つの列を結合する方法を知っていると、別々の列にあるデータを単一の結果として結合する必要があるときに時間を節約できます。 クラシックな例として、2つの列に保存されている姓と名を1つの列にフルネームとして結合する必要がある場合がありますが、住所や製品コード、日付など、情報が2つのセルに分かれていて一緒にする必要があるデータセットでも同様のニーズが生じます。 Excelは、スペースや空白セルの処理方法、および結果が元のデータにリンクされるか、固定値になるかに応じて、列を結合するためのいくつかの方法を提供します。
始める前に理解しておくべき重要なことは、Excelにはすべてを行う"列を結合する"ボタンが1つしかないということではないということです。 ホーム タブのマージと中央揃えボタンはビジュアル的にセルを結合しますが、Excelのマージと中央揃えボタンは左上の値のみを保持し、他の元のデータを削除します。 2つの列からデータを失わずに結合するには、新しい列に数式を使用するのが適切な方法です。 連結関数、コンキャット関数、アンパサンド演算子、TEXTJOINはすべてこのために設計されており、それぞれ特有の強みがあります。
このガイドでは、Excelで2つの列を結合するすべての方法を説明します: クイック結合のためのアンパサンド演算子、互換性のためのCONCATENATE関数、最新のExcel用のCONCAT関数、空白セルをきれいに処理するためのTEXTJOIN、パターンに基づいたフィルを式なしで行うためのFlash Fill、大規模データセット用のPower Query。 また、結合が完了した後で数式を静的な値に変換する方法もカバーしているため、列Aおよび列Bを安全に削除できます。 .NETでExcelファイルを生成する開発者は、C#でIronXLが列データをプログラム的に結合する方法を示すセクションを最後に見つけることができます。
方法1: アンパサンド演算子を使用して2つの列を結合する(最も速い)
最適: スペースや句読点を完全に制御したい2つの列の高速結合。
アンパサンド (&) は Excel で列を結合する最速の方法です。 Excelでアンパサンド (&) 演算子を使用して2つの列を結合するには、=A2 & " " & B2 のような数式を入力します。引用符内のスペースが2つの値の間に区切りを挿入します。
ステップ:
- 新しい列の最初のセル(たとえば、元のデータが列Aと列Bにある場合は列C)をクリックします。
- 次の数式を入力します: =A2&" "&B2
- Enterキーを押します。 最初のセルは今、結合された結果を示し、たとえば"James Carter"です。
- 再びセルをクリックし、塗りつぶしハンドル(セルの右下隅にある小さな四角)をダブルクリックするか、次のセルおよびすべての下の行に数式を適用するためにそれをドラッグします。
数式は自動的に更新され、下にドラッグされると各行の参照が調整されます。 コンマとスペースを追加する代わりに、単なるスペースを使用し、=A2&", "&B2を使用します。区切りなしで結合するには、引用符の内容を削除します: =A2&B2。

ドラッグする代わりに、フィルハンドルをダブルクリックします。 Excelは隣接する列のデータの最後の行まで自動的に埋め、時間節約になります。
方法2: CONCATENATE関数を使用する
最適: 古いExcelバージョンを使用しているか、アンパサンド短縮形よりも明示的な関数を好むユーザー。
CONCATENATE関数は、2つ以上のセルからテキストをマージするExcelの伝統的な方法ですが、最新のExcelバージョンでは、より柔軟なCONCAT関数に置き換えられました。 それでもすべてのExcelバージョンで動作し、アンパサンドアプローチと同じ結果を生成します。
CONCATENATE関数を使用してExcelで列をマージすることができます。例えば、=CONCATENATE(A2, " ", B2) は、2つのセルのテキストを間にスペースを挿入して結合します。
ステップ:
- 新しいマージされた列の最初のセルをクリックします。
- 次の数式を入力します: =CONCATENATE(A2," ",B2)
- Enterキーを押して確認します。
- 塗りつぶしハンドルをドラッグするかダブルクリックして、すべての行を埋めます。
他のセルからの値を追加するには、引数を拡張します: =CONCATENATE(A2," ",B2," ",C2) は3つの列からデータをマージします。

方法3: CONCAT関数を使用する(最新のExcel)
最適: Excel 2019、Microsoft 365、CONCATENATEのクリーンな置換を求める人。
ExcelのCONCAT関数を使用すると、複数のセルからのテキストを1つのセルに結合し、カンマでセルを区切り、空白や他のテキストを追加するために引用符を使用します。 これはCONCATENATEとまったく同じように機能しますが、CONCATENATEができない範囲も受け入れます。
ステップ:
- 新しい単一の列の最初のセルをクリックします。
- タイプします: =CONCAT(A2," ",B2)
- Enterキーを押してから、塗りつぶしハンドルをすべての列を通じて下にドラッグします。
セル範囲全体を一度に結合するには、引数として範囲を渡します: =CONCAT(A2:C2) は3つのセルすべてを区切りなしで結合します。 範囲内の各値の間にセパレーターを入れるには、TEXTJOIN(次にカバーされる)がより良い選択肢です。

現代のExcelのすべてのバージョンでは、後方互換性のためにCONCATENATE関数も機能しますが、新しい数式を書く際の現在の推奨はCONCATです。 両方とも、2つの列を結合すると同じ結果を生成します。
方法4: TEXTJOINを使用して空白をスキップする
最適: 列の一部のセルが空で、結果にトレーリングスペースやセパレーターを表示したくない場合の列の結合。
TEXTJOIN関数は、Excelで複数のセルからテキストを結合しながら、空白セルを無視するオプションを提供する強力なツールです。これにより、データ結合をよりクリーンに行うことができます。 Excel 2016以降で利用可能なTEXTJOIN関数は、数式=TEXTJOIN(" ", TRUE, A2, B2)を使用して空白セルを無視しつつ、列を結合することができます。
2番目の引数(TRUE)が空白をスキップする挙動を制御します。 TRUEに設定すると、引数リスト内の空のセルはスキップされ、代わりに余分なセパレーターは追加されません。
ステップ:
- 新しいマージされた列の最初のセルをクリックします。
- タイプします: =TEXTJOIN(" ",TRUE,A2,B2)
- Enterキーを押して、下にフィルします。
住所結合デモファイルでは、Suite列が空の行がこれを明確に示します。 単位列が空の行にアンパサンド演算子を使用して"890 Maple Avenue,"が、トレーリングコンマとスペースを生成します。 TEXTJOINをTRUEとして使用すると、"890 Maple Avenue"はトレーリング文字なしでクリーンになります。
2つ以上の列を結合するには、追加の引数として他のセル参照を追加します: =TEXTJOIN(" ",TRUE,A2,B2,C2) は複数の列を一度に結合し、空のセルをスキップします。
方法5:フラッシュフィルを使用して式なしで列を結合する
最適: 結果を得るために数式を書きたくない一度きりの結合。
Flash Fillはパターンを検出し、数式を使用せずに自動的にデータを入力します。 ソース構造が明確で一貫性がある場合、2つの列を結合する最速の方法の1つです。
ステップ:
- 新しい列の最初のセルに(例: C2)、手動で表示したいとおりに結合された結果を入力します。 姓と名の場合: "James Carter"と入力します。
- Enterキーを押して次のセルに移動します。
- Ctrl + E のショートカット(Flash Fill)を押します。 Excelは最初のセルのパターンを分析し、列の残りを自動的に埋めます。
または、ホームタブに移動し、編集グループのフィルをクリックし、ドロップダウンメニューからFlash Fillを選択します。 データ > Flash Fillからもアクセスできます。
Flash Fill は静的値を生成するため、数式はなく、列Aまたは列Bのソースデータが変更された場合に結果が自動的に更新されません。 これは一度の操作に最適ですが、データが定期的に更新されるライブスプレッドシートには適していません。
Ctrl+Eを押してもFlash Fillが起動しない場合は、パターンセルがソース列の直前にあることを確認し、空白のセルがないことを確認します。 また、File > Options > Advanced > Automatically Flash FillでFlash Fillが有効であることを確認します。
方法6: Power Queryを使用して列を結合する
最適: 大規模データセット、定期的なデータインポート、または新しいデータで再度実行する必要がある結合。
Power Queryは、大規模で繰り返しのデータセットの列を結合するのに効果的です。 これにより、ソースデータが変更されても、手動で数式を書き直すことなく、結合操作を変換ステップとして再適用できます。
ステップ:
- データテーブル内の任意の場所をクリックします。
- データタブに移動し、データ取得 > テーブル/範囲から (または一部のバージョンではシートから) をクリックします。Power QueryEditorが開きます。
- Ctrlキーを押しながらクリックして、両方の列ヘッダー (例えば、First Name と Last Name) を選択します。
- 選択した列ヘッダーの1つを右クリックして、列を結合を選択します。
- ダイアログで、セパレーター (スペース、コンマ、タブ、またはカスタム) を選択し、新しく結合された列に"フルネーム"などの名前を付けます。
- OK をクリックします。 Power Queryは、2つのソース列を置き換えて新しい結合列を作成します。
- 閉じて読み込む をクリックして、ワークシートに結果を新しいテーブルとして返します。
結合された結果は、新しいExcelテーブルにロードされます。 ソースデータが更新された場合は、データタブの 更新 をクリックすると、自動的に結合が再実行されます。

結合が繰り返しプロセスの一部である場合、Power Queryが適切なツールです。 数百行のみの2つの列を単純に一度だけ結合する場合は、数式のセットアップがより高速です。
式を静的値に変換し、ソース列を削除する方法
アンパサンド、CONCATENATE、CONCAT、またはTEXTJOINのいずれかの数式方法を使用した後、新しく結合された列は、元の列を参照する数式を含みます。 列Aまたは列Bを削除すると、数式が壊れます。 数式の結果を静的データとして最終確定するには、新しい列をコピーして値として貼り付けます。
ステップ:
- 新しい結合列内のすべてのセルを選択します(例: C2:C20)。
- Ctrl + C を押してコピーします。
- 同じ列の最初のセルを右クリックし、ドロップダウンメニューから 貼り付けのオプション を選択します。
- 値 (または V を押してから Enter )を選択します。 数式は静的値に置き換えられます。 貼り付けのオプションは、数式を元のデータを参照しない固定テキストに変換します。
- 次に、列Aと列Bを選択します(Ctrlキーを押しながらそれぞれの列レターをクリックして両方を選択します)。
- 右クリックして 削除 を選択します。 結合された列が現在静的値のみを含んでいるため、ソース列の削除はエラーを引き起こしません。 このステップは、元の列からデータを削除しますが、新しい列に結合されたデータは保存されます。
このプロセスの後、単一の列はフルネーム(または他の結合結果)をプレーンテキストとして含みます。 元の列はなくなり、新しい合併された列単独で残ります。

よくある問題とトラブルシューティング
結合結果がテキストではなく数値として表示される
これは、ソースのセルの一部が数値としてフォーマットされ、テキストではない場合に発生します。 連結関数とアンパサンドの両方はほとんどの場合に数値を自動的にテキストに変換しますが、結果が正しくないように見える場合は、数値のセルをTEXT()でラップしてフォーマットを強制します: =A2&TEXT(B2,"0") または日付の場合は =A2&TEXT(B2,"DD-MMM-YYYY")。
一部の結合結果の末尾に余分なスペースやコンマがある
これは空白のセルの問題です。 ソース列のセルが空のときでも、アンパサンドの数式は区切りを追加します。 空白を自動的にスキップするために、=TEXTJOIN(" ",TRUE,A2,B2) に切り替えて、 TRUE を2番目の引数にします。
Flash Fillが列全体の代わりに1行または2行のみを埋める
これは通常、ソースデータに大文字小文字の不一致、余分なスペース、または2つの値が異なる順序で並んでいる行などの不整合があることを意味します。 TRIM関数を使用してソース列の余分なスペースをチェックし、最初の行から一貫したパターンであることを確認します。
元の列を削除すると結合された列が壊れる
結合された列にはまだ元のデータを参照する数式が含まれています。 ソース列を削除する前に、貼り付けのオプションを参照してください。 結合された列が静的値のみを保持している場合、列Aと列Bを削除しても安全です。
CONCATENATEまたはCONCATの数式が結果ではなく数式テキストを表示する
セルがテキストとしてフォーマットされています。 セルをクリックし、ホームタブの数値フォーマットドロップダウンでセルフォーマットを"General"に変更してから、F2キーを押し、Enterキーを押して数式を再評価します。
クイックリファレンス: Excelで2つの列を結合する方法
| 方法 | 数式の例 | 自動的に更新される | 空白のセルを処理 |
|---|---|---|---|
| アンパサンド演算子 | =A2&" "&B2 | はい | いいえ(末尾の区切り) |
| CONCATENATE関数 | =CONCATENATE(A2," ",B2) | はい | いいえ(末尾の区切り) |
| CONCAT関数 | =CONCAT(A2," ",B2) | はい | いいえ(末尾の区切り) |
| TEXTJOIN関数 | =TEXTJOIN(" ",TRUE,A2,B2) | はい | はい(空白をスキップ) |
| フラッシュフィル | Ctrl + E(数式なし) | なし | はい(パターンによる) |
| Power Query | 列を結合するステップ | 更新時 | 設定可能 |
| 値を貼り付ける | Ctrl+C、貼り付けオプション > 値 | いいえ(静的に変換) | 該当なし |
開発者向け: IronXLを使用してプログラムで列データを結合する
.NETアプリケーションが通常の配信前に列を結合する必要があるExcelレポートを生成する場合、IronXLを使用すると、サーバーにMicrosoft Officeがインストールされていなくても、C#でセル値を読み取り、結合し、書き込むことができます。 CONCAT数式をセルに書き込むのではなく、IronXLはソース値を読み取り、組み合わせた結果を静的値として直接書き込みます。これにより、出力ファイルに数式依存が残りません。
社員スプレッドシートを読み込み、氏名と姓の列を新しい氏名列に結合してから、元の列を削除する完全な例を以下に示します。
using IronXL;
WorkBook workBook = WorkBook.Load("employee-list.xlsx");
WorkSheet ws = workBook.DefaultWorkSheet;
// Find how many rows of data exist (starting from row 2, row 1 is the header)
int lastRow = ws.Rows.Count();
// Insert a new column C for the merged result
ws.InsertColumn(2); // inserts before existing column C, shifting data right
ws["C1"].Value = "Full Name";
// Combine first name (col A) and last name (col B) for each row
for (int row = 2; row <= lastRow; row++)
{
string firstName = ws[$"A{row}"].StringValue;
string lastName = ws[$"B{row}"].StringValue;
// Combine data with a space separator - same result as=A2&" "&B2in Excel
ws[$"C{row}"].Value = $"{firstName} {lastName}".Trim();
}
// Save the workbook with the new merged column
workBook.SaveAs("employee-list-merged.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("employee-list.xlsx");
WorkSheet ws = workBook.DefaultWorkSheet;
// Find how many rows of data exist (starting from row 2, row 1 is the header)
int lastRow = ws.Rows.Count();
// Insert a new column C for the merged result
ws.InsertColumn(2); // inserts before existing column C, shifting data right
ws["C1"].Value = "Full Name";
// Combine first name (col A) and last name (col B) for each row
for (int row = 2; row <= lastRow; row++)
{
string firstName = ws[$"A{row}"].StringValue;
string lastName = ws[$"B{row}"].StringValue;
// Combine data with a space separator - same result as=A2&" "&B2in Excel
ws[$"C{row}"].Value = $"{firstName} {lastName}".Trim();
}
// Save the workbook with the new merged column
workBook.SaveAs("employee-list-merged.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("employee-list.xlsx")
Dim ws As WorkSheet = workBook.DefaultWorkSheet
' Find how many rows of data exist (starting from row 2, row 1 is the header)
Dim lastRow As Integer = ws.Rows.Count()
' Insert a new column C for the merged result
ws.InsertColumn(2) ' inserts before existing column C, shifting data right
ws("C1").Value = "Full Name"
' Combine first name (col A) and last name (col B) for each row
For row As Integer = 2 To lastRow
Dim firstName As String = ws($"A{row}").StringValue
Dim lastName As String = ws($"B{row}").StringValue
' Combine data with a space separator - same result as =A2&" "&B2 in Excel
ws($"C{row}").Value = $"{firstName} {lastName}".Trim()
Next
' Save the workbook with the new merged column
workBook.SaveAs("employee-list-merged.xlsx")
コード内でTEXTJOINの空白をスキップする動作を再現するには、結合前にチェックを追加してください。
// Skip blank cells when combining - equivalent to TEXTJOIN(" ", TRUE, A2, B2)
string combined = string.Join(" ",
new[] { firstName, lastName }
.Where(s => !string.IsNullOrWhiteSpace(s)));
ws[$"C{row}"].Value = combined;
// Skip blank cells when combining - equivalent to TEXTJOIN(" ", TRUE, A2, B2)
string combined = string.Join(" ",
new[] { firstName, lastName }
.Where(s => !string.IsNullOrWhiteSpace(s)));
ws[$"C{row}"].Value = combined;
Imports System.Linq
' Skip blank cells when combining - equivalent to TEXTJOIN(" ", TRUE, A2, B2)
Dim combined As String = String.Join(" ",
New String() {firstName, lastName} _
.Where(Function(s) Not String.IsNullOrWhiteSpace(s)))
ws($"C{row}").Value = combined
また、IronXLは、列データの結合とは別に、ヘッダーフォーマッティング用に行をまたがってセルを視覚的に結合するMerge()メソッドをサポートしています。 すべての詳細については、結合セルガイドとExcelファイルを連結または結合するC#チュートリアルを参照してください。
始め方: Install-Package IronXL.ExcelでNuGetを介してインストールします。 30日間の無料トライアルが利用可能で、クレジットカードは不要です。
さらに読む:
まとめ
Excelで2つの列を結合する方法にはそれぞれ異なるトレードオフがあります。 アンパサンド演算子は、すべてのソースセルに値がある場合、2つの列を結合する仕事に最速の数式です。 TEXTJOINはデータ内に空白セルが存在する場合に、スキップブランクス引数が結果にトレーリングセパレーターが表示されないようにするため、より良い選択です。 CONCATENATEは依然として完全にサポートされており、CONCATと同じ出力を生成しますが、最新のExcelではCONCATが現在の標準です。 Flash Fillは、数式が一切不要で、パターン認識でわずか2ステップで結果を得たい場合の答えです。
一度、結合されたデータが新しい結合列にある場合、常に甲斐値を保持する前に、列Aと列Bを削除する前に貼り付けのオプションを使用します。 まず、数式を静的値に変換すると、新しい単一の列が独立しており、残りの結果として保持しても安全です。 新しいデータが到着するたびに同じ結合を実行する必要がある大規模データセットで繰り返しのワークフローの場合、更新ボタンで結合を処理することで数式を書き直すことは避けることができます。
.NETで作業する開発者は、アプリケーション生成ワークブックでこのプロセスを自動化する必要がある場合、IronXLを使用して各行を読み込み、コードで値を結合し、数式の依存関係なしに結合されたデータを書き戻すことができます。 自分の環境でテストするために無料トライアルから始めてください。




