エクセルで2つのリストを見比べて「どのデータが重複しているか」「別シートと比較して一致するものを探したい」と思ったことはありませんか。
この記事では【Excel】エクセルの重複チェックを関数でする方法(COUNTIF・VLOOKUP・2つのシートを比較)について解説していきます。
ポイントは
・VLOOKUP関数で2つのリストを比較して重複を検出する
・別シート間の重複チェックをCOUNTIF・VLOOKUPで行う
それでは詳しく見ていきましょう。
エクセルの重複チェックを関数でする方法1【COUNTIF関数で同一シート内の重複を判定する】
同一シート内のデータに重複がないかを関数で確認する際、COUNTIF関数は最もシンプルで扱いやすい選択肢です。
セルに数式を入力するだけで各データの出現回数を数値で返すため、重複の有無だけでなく何件重複しているかまで把握できます。
以下のサンプルデータを使って解説します。

COUNTIF関数で重複件数を表示する
D2セルに以下の数式を入力してD7までコピーします。
=COUNTIF($A$2:$A$7,A2)
COUNTIF関数の構文は COUNTIF(範囲, 検索条件) です。
第1引数「範囲」は$A$2:$A$7と絶対参照で固定します。
第2引数「検索条件」にはA2を指定し、その行の商品名が範囲内に何件あるかをカウントします。
結果が1なら重複なし、2以上なら重複ありと判断できます。
サンプルでは「桜餅」と「柏餅」がそれぞれ2件、「マシュマロ」「チョコ」は1件と表示されます。

COUNTIFS関数で複数条件の重複を判定する
商品名と担当者の組み合わせが重複しているかどうかを確認したい場合は、複数条件に対応したCOUNTIFS関数を使います。
=COUNTIFS($A$2:$A$7,A2,$B$2:$B$7,B2)
COUNTIFS関数の構文は COUNTIFS(範囲1, 条件1, 範囲2, 条件2, …) です。
A列の商品名とB列の担当者の両方が一致する行数を返します。
サンプルデータでは「桜餅+田中」の組み合わせが2行存在するため、該当行には2が返ります。

複数条件を組み合わせることで、単一列では見えなかった「行全体としての重複」を正確に検出できます。
エクセルの重複チェックを関数でする方法2【VLOOKUP関数で2つのリストを比較する】
2つの異なるリストを比較して「片方にしか存在しないデータ」や「両方に存在する重複データ」を検出したい場合は、VLOOKUP関数を使った比較が効果的です。
VLOOKUP関数は指定した値を別の範囲から検索し、見つかれば対応する値を返し、見つからなければエラーを返します。
このエラーの有無を重複チェックの判定として活用できます。
VLOOKUP関数でリストAにリストBの値が存在するか確認する
E列に2つ目のリスト(比較用)としてアボカド・桜餅・カボチャ・チョコ・マグロが入力されているとします。
F2セルに以下の数式を入力してF6までコピーします。
=IFERROR(VLOOKUP(E2,$A$2:$A$7,1,FALSE),"なし")
VLOOKUP関数の構文は VLOOKUP(検索値, 範囲, 列番号, 検索方法) です。
第1引数「検索値」にE2を指定します。
第2引数「範囲」には$A$2:$A$7を絶対参照で指定します。
第3引数「列番号」は1とし、範囲の1列目(A列)の値をそのまま返します。
第4引数「検索方法」はFALSEで完全一致検索を指定します。
IFERROR関数で囲むことで、見つからなかった場合に「なし」と表示されます。
結果として、E列の値がA列に存在すれば商品名が表示され、存在しなければ「なし」と表示されるため、2つのリストの一致・不一致を一目で確認できます。

VLOOKUP結果をIF関数で「重複あり・なし」に変換する
表示を「重複あり・なし」のテキストに統一したい場合は以下の数式を使います。
=IF(IFERROR(VLOOKUP(E2,$A$2:$A$7,1,FALSE),"")="","重複なし","重複あり")
VLOOKUP関数がエラーを返した場合(値が見つからなかった場合)にIFERRORで空白に変換し、空白であれば「重複なし」、そうでなければ「重複あり」とIF関数で判定します。

この数式をF列に入力することで、E列の各データがA列に存在するかどうかを明確なテキストで確認できます。
エクセルの重複チェックを関数でする方法3【別シート間でCOUNTIFを使って比較する】
実務では同一シートだけでなく、別シートのデータと比較して重複を検出したい場面も多くあります。
COUNTIF関数は別シートのセル範囲も参照できるため、シートをまたいだ重複チェックにもそのまま活用できます。
別シートのリストと比較するCOUNTIF数式
Sheet1のA列に商品リストがあり、Sheet2のA列に別の商品リストがある状況を想定します。
Sheet1のD2セルに以下の数式を入力してコピーします。
=COUNTIF(Sheet2!$A$2:$A$7,A2)

Sheet2の範囲を参照する場合は シート名!セル範囲 の形式で記述します。
シート名にスペースや記号が含まれる場合は ‘Sheet 2’!$A$2:$A$7 のようにシート名をシングルクォーテーションで囲む必要があります。
結果が1以上であればSheet2にも同じ値が存在する(重複あり)と判断できます。
0であればSheet2には存在しない(重複なし)ということになります。
この数式をIF関数と組み合わせて =IF(COUNTIF(Sheet2!$A$2:$A$7,A2)>0,”重複あり”,”重複なし”) とすることで、シートをまたいだ重複チェック結果をわかりやすいテキストで表示できます。
別シート間でVLOOKUPを使って比較する方法
別シートとの比較にVLOOKUP関数を使う場合も、参照範囲にシート名を付けるだけで対応できます。
=IFERROR(VLOOKUP(A2,Sheet2!$A$2:$A$7,1,FALSE),"なし")
A2の値をSheet2のA列から検索し、見つかれば商品名を、見つからなければ「なし」を返します。
Sheet1の各行にこの数式を入力することで、Sheet1のデータがSheet2に存在するかどうかを一列で確認できます。

COUNTIFとVLOOKUPはそれぞれ特性が異なりますが、重複の件数まで把握したい場合はCOUNTIF、一致したデータの内容も確認したい場合はVLOOKUPと使い分けるとよいでしょう。
まとめ エクセルの重複チェック(複数列・2列・別シート・数式・VLOOKUP・2つのシートを比較)
エクセルで関数を使って重複チェックをする方法をまとめます。
・COUNTIF:=COUNTIF($A$2:$A$7,A2) で同一列内の重複件数を確認できる
・COUNTIFS:複数条件の組み合わせによる重複を =COUNTIFS(範囲1,条件1,範囲2,条件2) で判定できる
・VLOOKUP:=IFERROR(VLOOKUP(E2,$A$2:$A$7,1,FALSE),”なし”) で2つのリストを比較できる
・別シート比較:Sheet2!$A$2:$A$7のようにシート名を付けることでシートをまたいだ重複チェックが可能
重複チェックでは用途に応じた関数の使い分けが重要です。
同一シート内の単純な重複ならCOUNTIF、2つのリスト比較にはVLOOKUP、別シートとの照合にはシート名付きの参照を使うと効率的に作業できます。
これらの関数を組み合わせることで、大量データの重複管理もスムーズに行えるようになります。


コメント