Excelで重複をチェックする方法: すべての方法を説明 (2026)
従業員記録、顧客名、または販売記録の数百行を含むスプレッドシートをじっと見つめていますが、何かがおかしいと感じます。 どこかに重複する値があり、それが分析を歪める前に見つける必要があります。 Excelは重複をチェックするためのいくつかの強力な方法を提供しており、適切な方法は、強調表示、カウント、フィルタリングするか、完全に削除するかによります。
最も迅速な方法は条件付き書式です。 セル範囲を選択し、ホーム > 条件付き書式 > セルのルールを強調表示> 重複値に移動し、書式スタイルを選択してOKをクリックします。 Excelは、元のデータをまったく変更せずに、選択した範囲のすべての重複値を即座に強調表示します。
この記事では、Excelで重複データを処理するためのすべての信頼できる方法を網羅しており、重複したエントリを効率的にチェックする一般的な質問に回答しています。条件付き書式を使用して重複を強調表示し、COUNTIFフォーミュラを使用して重複をカウントし、アドバンスフィルターを使用して重複値とユニーク値を並べて抽出する、組み込みの重複削除機能を使用して重複行を削除する、複数の列にわたる重複を見つける、Power Queryを使用して大規模なデータセットを処理するなどがあります。 トラブルシューティングセクションは、エッジケースをカバーしています。 重複する値をプログラム的に検出して管理する必要がある開発者も、最後にIronXLがC#でこれをどのように処理するかを示しています。
メソッドを掘り下げる前に知っておくべきことがあります。これらのアプローチはすべて同じように機能するわけではありません。 条件付き書式とCOUNTIFは、元のデータをそのままにしておきます。 重複削除機能は重複行を恒久的に削除します。 破壊的な方法を使用する前に、常にデータのバックアップを作成してください。
方法1: 条件付き書式で重複を強調表示(最速)
条件付き書式は、元のデータを変更することなく、Excelワークシート内の重複セルを視覚的に識別する最速の方法です。 選択したセル範囲内で、一度以上出現する値を含むすべてのセルに書式スタイルを適用します。
-
チェックしたいセル範囲を選択します。 例えば、B2:B151を選択して、従業員データファイルの従業員ID列をチェックします。
-
Excelリボンのホームタブに移動します。
-
スタイルグループの条件付き書式をクリックします。
-
ドロップダウンメニューのセルのルールを強調表示にカーソルを合わせます。
-
サブメニューから重複値を選択します。
- ダイアログボックスで、右側のドロップダウンから希望する書式スタイルを選択します。たとえば、ライトレッドフィルまたはイエローフィル。
- OKをクリックします。
Excelは、選択した範囲内の重複値を含むすべてのセルを即座に強調表示します。 ユニークな値は無地のままです。 以下のスクリーンショットでは、列Bの重複する名前が赤で強調表示され、データを手動でスクロールせずに150行すべてを横断して即座に視認できます。

画像のaltテキストを追加
この方法が最適なケース: このアプローチは、単一の列でクイックな視覚的チェックを行うのに理想的で、例えば名前の重複、列Dの重複メール、または重複する従業員IDをスキャンすることです。 条件付き書式を使用すると、元のデータを変更することなく重複値を視覚的に識別できるため、次に何をすべきか決定する前に重複を見つけるクイックな方法となります。 重複検出が組み込まれたExcelレポートを生成するためには、IronXLによってこれらのチェックをC#でプログラム的に適用できます。
重要:この方法は、正確に一致する重複を基にセルを強調表示します。 大文字と小文字を区別しないため、"JAMES"と"james"は重複とみなされます。 空のセルは重複として見なされません。
方法2: COUNTIFで重複をカウント
COUNTIF関数は、範囲内の各値が何回出現するかを正確にカウントします。 これは、重複が存在するかどうかだけでなく、各エントリにいくつ重複があるか、どの特定の行が影響を受けているかを知りたいときに有用です。
- データの横の空のセル、たとえばセルZ2をクリックして、ヘルパーカラムを作成します。
- 次の数式を入力します: =COUNTIF($B$2:$B$151,B2)
- Enterを押します。
- データ行の残りに数式をコピーします(Z2からZ151まで)。
COUNTIF数式は、指定した範囲A2からA151までのA2の値が何回出現するかを返します。結果が1の場合、その値はユニークです。 1より大きい結果は、その値が何回も現れる重複であることを示しています。 countif機能は論理コンテキストでブール値を返します: 公式がtrueを返したとき、それは重複値を示し、エントリが一意であるときfalseを返し、フィルタリング用データを選択するのが簡単です。 範囲に空文字列または空白が含まれている場合、それらの空のセルは同一値としてカウントされ、複数の空欄が存在する場合に行数が1を超えて返ります。数式を下にコピーすると、A2のようなセル参照は常に相対的に保たれ、適切にシフトされます。
以下のスクリーンショットでは、列Zのヘルパーカラムにユニークな従業員IDには1のカウントが、同じIDが複数回出現する行には2以上のカウントが表示され、重複する行がどの行であるか、そしていくつの重複が存在するかを簡単に識別できます。

画像のaltテキストを追加
複数の列にわたって重複をカウント: 複数の条件に基づいて重複をチェックするには、COUNTIFS関数を使用します。 例えば、=COUNTIFS($B$2:$B$151,B2,$C$2:$C$151,C2)は、ファーストネームとラストネームの両方が一致する行のカウントを返し、データが2つの列に分かれていても重複名を見つけることができます。
プロのヒント: 最初の出現からのみ重複をカウントするには、=COUNTIF($A$2:A2,A2)を使用します。 数式が下にコピーされると拡張されるため、任意の値の最初の出現は常に1を返し、繰り返された出現のみが2以上を返します。 これにより、最初の出現を保持しながら重複行のみを識別して削除することができます。
方法3: 重複行を見つけるためにフィルターを使う
COUNTIFを使用してヘルパーカラムで重複行をタグ付けしたら、Excelのフィルター機能を使用して、スプレッドシート全体で重複行を素早く隔離して見つけることができます。
- まず方法2を完了して、列ZにCOUNTIFヘルパーカラムを追加します。
- データ範囲内の任意のセル、たとえばB2をクリックします。
-
データタブに移動し、ソート&フィルターグループでフィルターをクリックします。
- 列Zのヘルパーカラムヘッダーのドロップダウン矢印をクリックします。
- 1のチェックを外し、他のすべての値にチェックを入れて、OKをクリックします。
Excelは、カウントが1を超える行、つまり重複行のみを表示します。 必要に応じてそれらをレビュー、編集、または削除できます。 テーブル全体で重複行を見つけるには、適用する前にフィルター条件ですべての列を確認します。

画像のaltテキストを追加
ユニークなレコード用アドバンスフィルターの使用: 別のアプローチとして、データタブの高度なフィルターオプションを使用します。 データ > 高度なに移動し、"ユニークなレコードのみ"がチェックされていることを確認し、フィルタリングの場所か結果を新しい場所にコピーするかを選択します。 これにより、データセットから直接ユニークなレコードが抽出され、単なる重複を手動でフィルタリングするよりも速く、異なるエントリのみを表示します。
方法4: ビルトイン機能で重複を除去する
Excelの重複を除去する機能は、データから重複行を排除する最も直接的な方法です。 それは重複した行を恒久的に削除し、各重複セットの最初の出現のみを残します。
重複排除機能を使用する前に、データのバックアップを作成してください。 この操作は重複した行を恒久的に削除し、ファイルを保存した後は元に戻せません。
- データ範囲内の任意のセルを選択します、たとえばB2。
-
Excelリボンのデータタブに移動します。
-
データツールグループで重複を削除をクリックします。
- 重複を削除するダイアログで、どの列を確認するか選択します。 行全体に基づいて重複を削除するには、すべての列をチェックします。 従業員IDのような特定の列に基づいて重複を削除したい場合は、その列のみをチェックします。
- OKをクリックします。
Excelは選択した列に基づいてすべての重複行を削除し、各値の最初の出現のみを保持します。 ダイアログボックスが最終結果を確認します:重複した値が見つかり削除された数と、残るユニークな値の数。
以下のスクリーンショットでは、従業員データファイルからのすべての25列がリストされ、各列をチェックまたは解除するオプションを備えた重複を削除するダイアログが表示されています。 OKをクリックした後、Excelは重複行が削除された数と残るユニークなレコードの行数を報告します。

画像のaltテキストを追加
確認する列を選ぶ: すべての列を選択した場合、Excelは完全に一致する行のみを削除します。これは、ほとんどの場合望ましくない場合です。 ほとんどの場合、データ範囲の左上のセルである列Aの従業員IDのように、主要な識別子列のみをチェックし、その単一列に基づいて重複行を削除し、他のデータはそのままにします。 特定の列の重複値のみを削除するには、その列をチェックし、他のすべてを重複削除ダイアログで解除します。 これにより、行の残りを妨害せずに必要なフィールドのためにExcelスタイルで重複を削除できます。
注意: 重複削除機能は、削除する前に行をプレビューしません。 重複行を削除する前に見直したい場合は、最初に方法2と方法3を使用して識別し、手動で削除してください。
方法5: COUNTIFSを使用して複数の列にわたる重複を見つける
単一の列でなく、フィールドの組み合わせに基づいて重複を識別する必要がある場合、COUNTIFS関数は一度に複数の条件を処理します。 例えば名のように多くの繰り返しがあり、実際には重複していない場合でも、苗字と名の組み合わせがユニークなレコードを定義する場合に便利です。
- ヘルパー列を追加します。たとえば、セルZ2の列Zです。
- 次の数式を入力します: =COUNTIFS($B$2:$B$151,B2,$C$2:$C$151,C2)
- 数式をZ151までコピーします。
この数式は、列Bの名と列Cの姓が現在の行の値に一致する行をカウントします。 1より大きい結果は、その組み合わせが重複するエントリとして識別されます。
テーブル全体にわたるさらに具体的な重複検出のために、COUNTIFS数式を列Eの部門や列Kの採用日に追加することができます。同日を共有する重複エントリを探したい場合に便利です。 COUNTIFSのようなExcel数式は、任意の条件の組み合わせに対するカウントを返すため、この種の作業に最も柔軟なツールの一つです。

画像のaltテキストを追加
方法6: Power Queryを使用して大規模データセットの重複を削除する
Power Queryは、10,000行以上の大規模データセットの重複を削除するために推奨されます。 これはExcelの高度なツールで、組み込み重複削除機能よりも複雑な重複シナリオを効率的に処理し、ソースを直接変更せずに別のクエリに元のデータを保存します。
- データ範囲内の任意のセルを選択してください。例としてB2。
-
データタブに移動し、Get & Transform Dataグループでテーブル/範囲からをクリックします。求められた場合、データにヘッダーがあることを確認します。
- Power Queryエディターが開きます。 重複を確認したい列、例えば従業員ID列を選択します。
- 列ヘッダーを右クリックして重複を削除を選択します。
- Power Queryエディターのホームタブで閉じる & 読み込みをクリックして、重複のない結果を新しいシートに読み込みます。
Power Queryエディターはデータを別のクエリに読み込み、選択した列に基づいて重複行を削除し、最初の出現のみを保持します。 結果は新しいシートの新しい場所に読み込まれますので、元のデータは影響を受けません。

画像のaltテキストを追加
Excel 365とUNIQUE関数: Excel 365の利用者は、UNIQUE関数を使用して、ワークシート上で直接データセットから唯一の値を抽出することもできます。 数式=UNIQUE(A2:A151)は、従業員ID列から唯一の値のリストを一度に返します。Power Queryエディターを開くことなく行います。 これは重複とユニークなレコードをサイドバイサイドで管理するための洗練された方法です。
よくある問題とトラブルシューティング
条件付き書式は重複していないように見えるセルにフラグを付けます
条件付き書式は大文字小文字を区別せず、比較する前に先頭や末尾のスペースをトリミングします。 2つのセルが見た目に異なっているがフラグが立てられている場合、TRIM関数や置換を使用して隠し文字を確認してください。
重複を削除すると"重複なし"となりますが、同じ値が見えます
選択されたすべての列にわたって精密に比較が行われます。 すべての列をチェックした場合、行はすべてのフィールドで完全に一致する必要があります。 キーの列のみをチェックして、基準を狭めてみてください。
COUNTIFはすべてに対して1を返しますが、重複が見えます
範囲引数が正しくロックされていない可能性があります。 絶対参照($A$2:$A$151)を使用し、基準は相対参照(A2)を使用していることを確認してください。ロックされていない参照では、下にコピーしても縮小されて行が見逃されます。
私のExcelバージョンではPower Queryが利用できません
Power Queryは、WindowsのExcel 2016以降、MacのExcel 2019以降で利用可能です。 WindowsのExcel 2010および2013では、無料のMicrosoftアドインとして利用可能です。
条件付き書式は空のセルを重複として強調表示します
範囲に複数の空のセルが含まれている場合、Excelはそれらをデフォルトで同一の値として扱います。 COUNTIF数式を使用したカスタムルールを使用してください: =COUNTIF($A$2:$A$151,A2)>1 を選択された範囲の非空セルにのみ適用します。
正しい方法を選ぶ:クイックリファレンス
| 目標 | 方法 | |---|---| | データを変更せずに重複値を視覚的に強調 | ホーム > 条件付き書式 > セルの強調表示のルール > 重複値 | | 各値が何回出現したかをカウント | ヘルパー列で=COUNTIF($A$2:$A$151,A2)を使用 | | 重複行のみを表示するようにフィルター | COUNTIFヘルパー列を追加し、その列でデータ > フィルター | | 重複行を永久に削除 | データタブ > 重複を削除 (最初にデータのバックアップを作成してください) | | 複数の列にわたる重複を見つける | 各該当する列の条件で=COUNTIFS()を使用 | | 10,000行を超える大規模データセットを処理 | データタブ > テーブル/範囲から > Power Queryエディター > 重複を削除 | | Excel 365で唯一の値を抽出 | ワークシート上で直接=UNIQUE(range)を使用 |
開発者向け: IronXLで重複値を検出および処理
アプリケーションがExcelファイルを自動処理する場合、データパイプラインの一部として重複データを確認して削除する必要があります。IronXLは、サーバーにMicrosoft Officeがインストールされていなくても、セル値を読み取り、プログラムで比較し、C#で重複行を削除するためのクリーンなAPIを提供します。
以下に、C#で従業員ID列に基づいて重複行を見つけて削除する方法を示します。
using IronXL;
using System.Collections.Generic;
using System.Linq;
WorkBook workBook = WorkBook.Load("employee_data.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
var seen = new HashSet<string>();
var rowsToDelete = new List<int>();
// Start from row 2 to skip the header row
for (int i = 2; i <= 151; i++)
{
string cellValue = sheet[$"A{i}"].StringValue;
if (!seen.Add(cellValue))
{
// Value already seen, this is a duplicate row
rowsToDelete.Add(i);
}
}
// Delete duplicate rows in reverse order to preserve row numbers
foreach (int rowIndex in rowsToDelete.OrderByDescending(r => r))
{
sheet.RemoveRow(rowIndex);
}
workBook.SaveAs("employee_data_deduplicated.xlsx");
using IronXL;
using System.Collections.Generic;
using System.Linq;
WorkBook workBook = WorkBook.Load("employee_data.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
var seen = new HashSet<string>();
var rowsToDelete = new List<int>();
// Start from row 2 to skip the header row
for (int i = 2; i <= 151; i++)
{
string cellValue = sheet[$"A{i}"].StringValue;
if (!seen.Add(cellValue))
{
// Value already seen, this is a duplicate row
rowsToDelete.Add(i);
}
}
// Delete duplicate rows in reverse order to preserve row numbers
foreach (int rowIndex in rowsToDelete.OrderByDescending(r => r))
{
sheet.RemoveRow(rowIndex);
}
workBook.SaveAs("employee_data_deduplicated.xlsx");
Imports IronXL
Imports System.Collections.Generic
Imports System.Linq
Dim workBook As WorkBook = WorkBook.Load("employee_data.xlsx")
Dim sheet As WorkSheet = workBook.DefaultWorkSheet
Dim seen As New HashSet(Of String)()
Dim rowsToDelete As New List(Of Integer)()
' Start from row 2 to skip the header row
For i As Integer = 2 To 151
Dim cellValue As String = sheet($"A{i}").StringValue
If Not seen.Add(cellValue) Then
' Value already seen, this is a duplicate row
rowsToDelete.Add(i)
End If
Next
' Delete duplicate rows in reverse order to preserve row numbers
For Each rowIndex As Integer In rowsToDelete.OrderByDescending(Function(r) r)
sheet.RemoveRow(rowIndex)
Next
workBook.SaveAs("employee_data_deduplicated.xlsx")
コードは列Aの従業員IDの各値を読み取り、HashSetを使用して既に見た値を追跡し、同じ値が以前に現れた行を重複としてフラグを立てます。 行を削除する場合、残りの行のインデックスがずれないように逆順で行を削除します。
削除する代わりに背景色で重複値を強調したい場合、IronXLの条件付き書式APIを使用して、Excelの内蔵"セルの強調表示のルール"機能のビジュアル出力に一致させるように、プログラムで任意のセル範囲にフォーマットルールを適用できます。
IronXLはまた、Excelデータの読み書き、セルのフォーマットとスタイリング、およびサーバーにMicrosoft Officeがインストールされていなくても大規模なワークブックを処理することにも対応しています。
はじめに: Install-Package IronXL.ExcelでNuGetを通じてIronXLをインストールし、無料トライアルを開始してください。 IronXLは.NET 6+で動作し、Windows、Linux、macOS、Docker、Azure、AWSに対応しています。
まとめ
Excelでの重複チェックは、顧客リストを整理する、従業員レコードを確認する、データ分析の準備をするなど、定期的に行う必要があります。 迅速な視覚的チェックのために、条件付き書式が最も早い答えです。選択した範囲全体の重複値を元のデータに触れることなく強調表示します。 .NETでこれを自動化する開発者向けに、IronXLはサーバーにMicrosoft Officeを必要とせずにプログラムで重複を検出および削除するためのツールを提供します。
重複値を正確に見つけるために、COUNTIFおよびCOUNTIFSは出現数をカウントし、特定の行を識別し、それらを中心にフィルタを構築することができます。 重複行を永久に削除する準備ができたら、データタブの重複を削除する機能がそれを数回のクリックで処理し、大規模なデータセットではパフォーマンスと非破壊処理が重要な場合はPower Queryが最良のツールです。 どの方法を選択するにしても、削除する前に元のデータをバックアップしてください。




