Excelで2つの列を比較する方法:一致・重複・差異を抽出
Excelで2つの列を比較し、一致や差分を抽出する方法を分かりやすく解説。行ごとの比較からリスト全体の照合まで、IF、COUNTIF、XLOOKUP関数や条件付き書式を活用した実践テクニックを紹介します。
著者 Ayoub Farid · · 4 分で読めます
「リストAにあってリストBにない顧客はどれか?」「2つの価格の列は完全に一致しているか?」といった疑問を抱くことはよくあります。列の比較には、大きく分けて「行ごとに比較する」パターンと、「リスト全体を照合する」パターンの2種類があり、目的に応じて使い分けるエクセル関数が異なります。
行ごとに比較する:同じ行同士が一致しているか?
=A2=B2
セル同士が等しければTRUE、異なればFALSEが返されます。分かりやすい文字列で表示したい場合は、次のように指定します。
=IF(A2=B2,"Match","Different")
大文字と小文字を区別して厳密に比較したい場合は、=EXACT(A2,B2) を使用します。
端数処理(四捨五入など)によるわずかな誤差を許容して数値を比較したい場合は、次のように記述します。
=IF(ABS(A2-B2)<0.01,"Match","Different")
リスト全体を照合する:対象の値が相手の列に含まれているか?
セルA2の値が、B列のどこかに含まれているかどうかを調べるには、次のように入力します。
=IF(COUNTIF($B$2:$B$500,A2)>0,"In both","Only in A")
数式をオートフィルで下にコピーする前に、セル範囲に「$」を付けて絶対参照にしておきましょう。詳しくは COUNTIF関数 の解説をご覧ください。
MATCH関数を使う方法もあります。
=ISNUMBER(MATCH(A2,$B$2:$B$500,0))
一致するデータを抽出して比較する
もう一方のリストに対象項目が存在する場合、その価格などの関連データを取得できます。
=XLOOKUP(A2,$D$2:$D$500,$E$2:$E$500,"Missing")
取得した値を比較するには、=IF(B2=XLOOKUP(...),"Same price","Price changed") のように記述します。詳しくは XLOOKUP関数 の解説をご覧ください。
AにあってBにない項目を抽出する(Microsoft 365)
=FILTER(A2:A500,COUNTIF(B2:B500,A2:A500)=0)
この数式を入力すると、不足している項目の一覧がスピル機能によってまとめて抽出されます。詳しくは FILTER関数 の解説をご覧ください。
違いを色分けして視覚的に強調する
両方の列を選択し、ホーム > 条件付き書式 > セルの強調表示ルール > 重複する値 の順にクリックします。ダイアログボックスで「一意」を選択すると、片方にしか存在しないデータ(重複していない値)に色が付きます。
事前にデータをクレンジングする
余分なスペース(空白)が含まれていたり、数値と文字列の形式が異なっていたりすると、同じデータであっても一致しないと判定されてしまいます。比較を行う前に、両方のリストに TRIM関数 などを適用してデータを整えておきましょう。
よくある質問
Excelで2つの列を比較して一致を確認するにはどうすればよいですか?
同じ行同士を比べる場合は =A2=B2 を使用します。リスト全体の中に存在するかどうかを調べる場合は =COUNTIF($B$2:$B$500,A2)>0 を使います。
一方の列にあって、もう一方の列にない値を抽出するにはどうすればよいですか?
=IF(COUNTIF($B$2:$B$500,A2)=0,"Missing","") と入力するか、Microsoft 365であればFILTER関数を使用します。
2つの列を比較して該当する値を別の列から取得するには?
XLOOKUP関数またはVLOOKUP関数を使って、もう一方のリストから一致するデータを検索・取得します。
同じ値に見えるのに一致しない判定になるのはなぜですか?
前後に不要なスペースが含まれているか、一方のセルが文字列型、もう一方が数値型として保存されていることが主な原因です。