くまおやぢの雑記帳

人生は、やろうと思った瞬間がスタートライン。Excel・Access・ガジェット・スマホ関係のネタを綴っています。あなたの「できる」を応援します。

Excelで2列を比較する全方法|関数・条件付き書式・VBAを解説

1.はじめに

Excelで2列比較はなぜ重要?

日常の業務でExcelを使っていると、「この2つのリスト、同じ内容か確認しておいて」といった依頼、ありますよね?例えば顧客リストと注文リスト、商品コード一覧と在庫表など、別々のデータが本当に一致しているかチェックする作業――これがいわゆる「2列比較」です。

一見シンプルに思えるこの作業、実は見落としが発生しやすく、ちょっとしたミスがトラブルのもとに。だからこそ、正確かつ効率的な方法を知っておくことが、仕事の質を高めます。

よくある比較の失敗例

以下は、筆者が現場で何度も目にしてきた“ありがちミス”の例です。

  • 「目視で比較してたら見逃してた」問題
    → 100件を超えるようなデータ量を目視で確認しようとすると、集中力が続かず漏れが発生しがちです。

  • 「一致してるのに一致しない」現象
    → 見た目は同じでも、実は余分なスペースが入っていたり、全角・半角が混在していたりすると、Excel上では「一致しない」と判断されてしまいます。

  • 「比較方法がわからなくて全部手作業」症候群
    → 関数やVBAを使えば一発で終わるのに、知らないがゆえに苦労しているケースが少なくありません。

この記事では、そんな“あるある”なExcel比較の悩みを解消すべく、代表的な関数から、視覚的にわかりやすい方法、さらにはVBAによる自動化までを徹底的に解説していきます。

2.基本の「EXACT関数」で比較する方法

EXACT関数の基本構文と使い方

まずはExcelの比較関数の定番ともいえるEXACT関数からご紹介しましょう。EXACT関数はその名の通り、「まったく同じ文字列かどうか」を判定する関数です。

基本構文はこちら:

=EXACT(セル1, セル2)

例:

=EXACT(A2, B2)

このように書くと、A2セルとB2セルの内容が完全に一致していればTRUE少しでも違えばFALSEが返されます。

大文字・小文字の違いも厳密に比較する精度の高さ

たとえば以下の例をご覧ください。

よくあるミスとその対処法

空白文字に要注意

=EXACT(TRIM(A2), TRIM(B2))

数値と文字列の違い

=EXACT(TEXT(A2,"0"), TEXT(B2,"0"))

EXACT関数は「同じか、違うか」を判定する最もシンプルかつ強力な方法です。ただし、その厳密さゆえに思わぬFALSEが出ることもあるので、状況に応じて他の関数と組み合わせて使うとさらに便利です。

3.IF関数を用いた柔軟な比較方法

IF関数×=(イコール)での比較

「EXACT関数は厳密すぎて逆に使いにくい」という声も少なくありません。そんなときに登場するのが、IF関数と=(イコール)演算子を使った比較方法です。

基本構文:

=IF(A2=B2, "一致", "不一致")

この式では、A2とB2が「見た目上で一致」している場合に「一致」と表示され、違っていれば「不一致」となります。

この方法の良いところは、「大文字・小文字の区別をしない」ことと、「数値と文字列の区別も緩やか」であることです。

表示をカスタマイズ

○と×で表現

=IF(A2=B2, "○", "×")

英語で表現

=IF(A2=B2, "OK", "NG")

柔軟な表現が可能なIF関数

IF関数を使うことで、単純なTRUE/FALSEではなく、実務に即した表現が可能です。
条件付き書式と組み合わせれば、見た目でも分かりやすい比較ができます。

IF関数とEXACT関数の比較まとめ

特性 EXACT関数 IF関数×=
大文字・小文字区別 ○(区別する) ×(区別しない)
空白の影響 大きい 少ない
TRUE/FALSE以外の表示 ×(不可) ○(可能)
誤差許容 × 条件次第で○

4.条件付き書式で一目でわかる比較

重複や不一致セルの視覚的表示

関数の結果を見るだけじゃちょっと分かりにくい…というときに活躍するのが条件付き書式です。
比較結果を色で視覚的に強調することで、違いが一目でわかるようになります。

例:A列とB列の不一致セルを赤くする

  1. 範囲(例:A2:A6)を選択
  2. 「ホーム」タブ →「条件付き書式」→「新しいルール」
  3. 「数式を使用して、書式設定するセルを決定」を選択
  4. 数式欄に以下を入力
=A2<>B2
  1. 書式を「赤背景」などに設定 → OK!

これで、A列とB列が一致しない行のセルにだけ色がつきます。

応用:数式で条件を自在にカスタマイズ

A列に値があり、B列が空白の場合に色付け

=AND(A2<>"", B2="")

完全一致時に緑色でポジティブに

=A2=B2

視覚表現の工夫いろいろ

状態 背景色 文字色 効果
不一致 強調・注意喚起
一致 安心感
空白の混入 黄色 確認を促す

おまけ:Ctrl + ¥ で不一致セルを瞬時に選択!

関数や書式を使わず、手軽に不一致だけを探したいときはこのショートカット!

操作手順

  1. A列とB列をまとめて選択(例:A2:B100)
  2. キーボードで Ctrl + ¥(バックスラッシュ)を押す
  3. 異なる値がある行のセルだけが選択状態に!

  4. 視覚的には目立ちませんが、選択された状態になるので、そのまま色を塗ったり削除したりも可能です。

  5. 英語キーボードの場合は Ctrl + \ です。

5.COUNTIF関数で「片方にしかないデータ」を探す

COUNTIFで差分チェック

A列とB列を比較して、「AにはあるけどBにはない」「Bにだけある」といった片方だけの値を探すには、COUNTIF関数が便利です。

A列にあってB列にない値をチェック

=IF(COUNTIF(B:B, A2)=0, "A列のみ", "")

この数式は「B列の中にA2と同じ値が1つもないとき」に「A列のみ」と表示します。

B列にしかない値を探すには?

=IF(COUNTIF(A:A, B2)=0, "B列のみ", "")

応用:フィルターや条件付き書式と連携!

この判定結果を使って:

  • フィルターで「A列のみ」だけ抽出
  • 条件付き書式で強調表示(例:黄色)

こうすることで、差分チェックやデータ突合がぐっと楽になります!

6.MATCH関数・VLOOKUP関数で「照合」的な比較をする

MATCH関数で「存在するか」をチェック

MATCH関数は「検索した値が何番目にあるか」を返します。

例:A列の値がB列に存在するか?

=IF(ISNUMBER(MATCH(A2, B:B, 0)), "一致", "なし")
  • MATCH(A2, B:B, 0):A2の値がB列のどこかにある→その位置を返す
  • ISNUMBER(...):数値が返ってくれば「一致」と判断

VLOOKUP関数で照合する

VLOOKUPを使って、A列の値がB列にあるかを判定できます。

=IF(ISNA(VLOOKUP(A2, B:B, 1, FALSE)), "なし", "一致")

あるいは IFERROR を使ってスマートに:

=IFERROR(VLOOKUP(A2, B:B, 1, FALSE), "なし")

INDEX+MATCHでより柔軟な比較

=IFERROR(INDEX(B:B, MATCH(A2, B:B, 0)), "")
  • MATCHで位置を取得
  • INDEXでその位置の値を返す
  • 一致しなければ空白

使い分けのヒント

比較目的 おすすめ関数 理由
完全一致確認 EXACT関数 厳密に比較(大文字小文字など)
柔軟な一致表現 IF関数 表現の自由度が高い
片方にしかない値 COUNTIF 数え上げができる
存在チェック MATCH 位置確認でスピーディ
情報を引き出す VLOOKUP / INDEX+MATCH データ連携や照合向け

7.VBAで2列比較を自動化する

サンプルコード①:一致・不一致をセルに出力

関数を毎回入力するのが面倒、大量データで関数が重い…そんなときはVBA(マクロ)が最強の味方です。
以下のコードは、A列とB列の値を行ごとに比較し、結果をC列に「一致/不一致」と表示します。

Sub CompareColumnsSimple()
    Dim lastRow As Long
    Dim i As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To lastRow
        If Cells(i, 1).Value = Cells(i, 2).Value Then
            Cells(i, 3).Value = "一致"
        Else
            Cells(i, 3).Value = "不一致"
        End If
    Next i
End Sub

サンプルコード②:不一致セルに色をつける

より視覚的に違いを把握したい場合は、色付けバージョンが便利です。

Sub CompareAndHighlight()
    Dim lastRow As Long
    Dim i As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 2 To lastRow
        If Cells(i, 1).Value <> Cells(i, 2).Value Then
            Cells(i, 1).Interior.Color = RGB(255, 200, 200)
            Cells(i, 2).Interior.Color = RGB(255, 200, 200)
        Else
            Cells(i, 1).Interior.ColorIndex = xlNone
            Cells(i, 2).Interior.ColorIndex = xlNone
        End If
    Next i
End Sub

自動化で業務効率UP!

  • 毎日同じ比較をする
  • 何百~何千行のデータを扱う
  • 他人に引き継ぐ必要がある

こんなときは、VBAでマクロボタン化しておけばクリック一発。
関数地獄からの卒業も夢じゃありません!

8.2列比較時のよくあるQ&A

Q1. スペースが混じってうまく比較できない…

=EXACT(TRIM(A2), TRIM(B2))

TRIM関数で前後の余分なスペースを除去!

Q2. 数値と文字列の違いで一致しない…

=TEXT(A2, "0")=TEXT(B2, "0")

または

=A2&""=B2&""

→ 両方を文字列化して比較。

Q3. 小数点以下の誤差は無視したい…

=ROUND(A2, 2)=ROUND(B2, 2)

→ 四捨五入で小数第2位までの比較に!

Q4. 空欄のセルは比較対象から外したい…

=IF(OR(A2="", B2=""), "", IF(A2=B2, "一致", "不一致"))

→ 空欄セルがあれば結果を空白に。

Q5. 重複しているデータを検出したい…

=IF(COUNTIF(B:B, A2)>1, "重複", "")

→ 重複している値にラベル付けできます。

9.Excel 2列比較まとめ&使い分け早見表

あなたの作業に合った比較方法を選ぼう

ここまで紹介してきた比較手法を一覧表にまとめました。
自分の目的に合ったものを選んで使い分けてください!

比較テクニック 使い分け早見表

テクニック 使う場面・得意なケース 難易度 柔軟性 スピード感 おすすめ度
EXACT関数 完全一致が必要、大文字小文字まで正確に比較したいとき ★☆☆☆☆ ★☆☆☆☆ ★★★★☆ ★★★☆☆
IF関数 + = 演算子 実務的な「一致/不一致」の表示、柔軟な文言設定 ★☆☆☆☆ ★★★★☆ ★★★★☆ ★★★★★
条件付き書式 見た目で違いを一目で把握したいとき ★★☆☆☆ ★★★☆☆ ★★★☆☆ ★★★★★
Ctrl + ¥(バックスラッシュ) 軽く目視で不一致をチェックしたいとき ★☆☆☆☆ ★☆☆☆☆ ★★★★★ ★★★★☆
COUNTIF関数 一方にしかないデータを探したい、差分チェック ★★☆☆☆ ★★★★☆ ★★★☆☆ ★★★★★
MATCH関数 / VLOOKUP関数 存在確認、別表との照合、データの突合せ ★★☆☆☆ ★★★★☆ ★★☆☆☆ ★★★★☆
INDEX + MATCHの組み合わせ VLOOKUPの制約を超えた柔軟な検索・比較 ★★★☆☆ ★★★★★ ★★☆☆☆ ★★★★☆
VBA(比較・色付け・差分抽出) 毎回同じ比較をしたい、大量データ、手動操作を省きたいとき ★★★★☆ ★★★★★ ★★★★★ ★★★★★

ポイント別おすすめ

  • ラクにやりたい → Ctrl + ¥、条件付き書式
  • 厳密に比較したい → EXACT関数、VBA
  • 柔軟に表現したい → IF関数、COUNTIF
  • 大規模処理 or 自動化したい → VBA一択!

10.まとめ:少しずつ、でも確実に効率化を

比較作業って、地味だけどめちゃくちゃ大事。
でも、ちょっとした工夫や関数・VBAの知識があるだけで、一気に「ラクしてノーミス」が待っています。

関数もVBAも向き不向きがあります。
「どれが一番いいか?」ではなく、「今の自分の作業に合っているか?」で選ぶのが成功の秘訣です。