- 1.はじめに
- 2.基本の「EXACT関数」で比較する方法
- 3.IF関数を用いた柔軟な比較方法
- 4.条件付き書式で一目でわかる比較
- 5.COUNTIF関数で「片方にしかないデータ」を探す
- 6.MATCH関数・VLOOKUP関数で「照合」的な比較をする
- 7.VBAで2列比較を自動化する
- 8.2列比較時のよくあるQ&A
- 9.Excel 2列比較まとめ&使い分け早見表
- 10.まとめ:少しずつ、でも確実に効率化を
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列の不一致セルを赤くする
- 範囲(例:A2:A6)を選択
- 「ホーム」タブ →「条件付き書式」→「新しいルール」
- 「数式を使用して、書式設定するセルを決定」を選択
- 数式欄に以下を入力
=A2<>B2
- 書式を「赤背景」などに設定 → OK!
これで、A列とB列が一致しない行のセルにだけ色がつきます。
応用:数式で条件を自在にカスタマイズ
A列に値があり、B列が空白の場合に色付け
=AND(A2<>"", B2="")
完全一致時に緑色でポジティブに
=A2=B2
視覚表現の工夫いろいろ
状態 | 背景色 | 文字色 | 効果 |
---|---|---|---|
不一致 | 赤 | 白 | 強調・注意喚起 |
一致 | 緑 | 黒 | 安心感 |
空白の混入 | 黄色 | 黒 | 確認を促す |
おまけ:Ctrl + ¥ で不一致セルを瞬時に選択!
関数や書式を使わず、手軽に不一致だけを探したいときはこのショートカット!
操作手順
- A列とB列をまとめて選択(例:A2:B100)
- キーボードで
Ctrl + ¥
(バックスラッシュ)を押す 異なる値がある行のセルだけが選択状態に!
視覚的には目立ちませんが、選択された状態になるので、そのまま色を塗ったり削除したりも可能です。
- 英語キーボードの場合は
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も向き不向きがあります。
「どれが一番いいか?」ではなく、「今の自分の作業に合っているか?」で選ぶのが成功の秘訣です。