エクセルで2つの表を比較する方法|関数と色付けで違いを見つける
公開:2026年11月4日 作成:nari
先月と今月の一覧、請求書と支払予定、システムから出した表と手元の表。2つの表を見比べて「どこが違うか」を探す作業は、目で追うと時間がかかるうえに見落としも出ます。
この記事では、エクセルだけで2つの表を比較する方法を、かんたんなものから順に紹介します。表の形によって向いている方法が違うので、まずは下の早見表で選んでください。
どの方法を使えばいい?(早見表)
| 表の状態 | 向いている方法 |
|---|---|
| 行の順番も列の並びも同じ | 「=」で比べる・IF関数・条件付き書式で色付け |
| 行の順番がバラバラ/行が増えたり減ったりしている | VLOOKUP・COUNTIF(コードや番号など、行を見分ける列が必要) |
| 列の順番も違う・何列もまとめて比べたい | 比較ツールを使うのが早い |
この記事では、同じファイルの中に Sheet1(比べる元の表A)と Sheet2(比べる相手の表B)がある前提で説明します。別のファイルに分かれているときは、片方のシートをもう片方のファイルにコピーしてから始めると、数式が簡単になります。
同じ位置のセルを「=」で比べる
2つの表の形がまったく同じなら、いちばん手軽なのが「=」で比べる方法です。空いているシート(例:Sheet3)のA1セルに次の数式を入れます。
=Sheet1!A1=Sheet2!A1
同じなら TRUE、違えば FALSE と表示されます。この数式を表と同じ範囲までコピーすれば、どのセルが違うかが一覧で分かります。
シート名が「請求一覧」なら =請求一覧!A1=支払予定!A1 のようになります。数式を打っている途中で相手のシートのセルをクリックすると、シート名は自動で入ります。
IF関数で「違う」と表示する
TRUE・FALSE だらけだと見づらいときは、IF関数で違うところだけに文字を出します。
=IF(Sheet1!A1=Sheet2!A1,"","違う")
同じセルは空白のまま、違うセルにだけ「違う」と出るので、目で探しやすくなります。フィルターで「違う」だけに絞り込むこともできます。
条件付き書式で違うセルに色を付ける
元の表の上で、違うセルに直接色を付ける方法です。別のシートを用意しなくてよいので、見た目でいちばん分かりやすい方法です。
Sheet1で、比べたい範囲を選びます(例:A2セルから C100セルまで)。左上のセル(A2)から選び始めるのがポイントです。- 「ホーム」タブ →「条件付き書式」→「新しいルール」を選びます。
- 「数式を使用して、書式設定するセルを決定」を選び、次の数式を入れます。
=A2<>Sheet2!A2
- 「書式」→「塗りつぶし」で好きな色を選び、「OK」を押します。
これで、Sheet2 と中身が違うセルにだけ色が付きます。
- 数式の
A2に$が付いていると($A$2)、すべてのセルが同じ1つのセルと比べられてしまいます。$は消してください。 - 選び始めたセルと、数式のセル(A2)がずれていると、色の付く場所がずれます。
順番がバラバラな表を比べる(VLOOKUP・COUNTIF)
ここまでの方法は「同じ位置にあるセルどうし」を比べるので、行の順番が違ったり、途中に1行増えていたりすると、それ以降がすべて「違う」になってしまいます。
そんなときは、取引先コードや伝票番号のように行を見分けられる列を手がかりにして比べます。例として、次の2つの表を比べてみます。
| Sheet1(表A:請求一覧) | ||
|---|---|---|
| A列:コード | B列:取引先 | C列:金額 |
| 101 | 山田商事 | 12,000 |
| 102 | 佐藤物産 | 8,500 |
| 103 | 鈴木工業 | 3,200 |
| Sheet2(表B:支払予定) | ||
|---|---|---|
| A列:コード | B列:取引先 | C列:金額 |
| 103 | 鈴木工業 | 3,200 |
| 101 | 山田商事 | 12,000 |
| 104 | 田中商店 | 5,000 |
| 102 | 佐藤物産 | 8,000 |
金額が違う行・Bにない行を探す(VLOOKUP)
Sheet1 の D2セルに次の数式を入れ、下の行までコピーします。
=IFERROR(IF(VLOOKUP(A2,Sheet2!A:C,3,FALSE)=C2,"一致","金額が違う"),"Bにない")
コードを手がかりに Sheet2 から同じ取引先の金額を探し、同じなら「一致」、違えば「金額が違う」、Sheet2 に見つからなければ「Bにない」と出ます。上の例では、佐藤物産(102)が「金額が違う」になります。
| コード | 取引先 | 金額 | D列の結果 |
|---|---|---|---|
| 101 | 山田商事 | 12,000 | 一致 |
| 102 | 佐藤物産 | 8,500 | 金額が違う |
| 103 | 鈴木工業 | 3,200 | 一致 |
Microsoft 365 や Excel 2021 以降なら、XLOOKUP で相手の金額を横に並べて見比べることもできます。
=XLOOKUP(A2,Sheet2!A:A,Sheet2!C:C,"Bにない")
Bにだけある行を探す(COUNTIF)
VLOOKUP は表Aから見た比較なので、表Bにだけある行(上の例では田中商店)は見つかりません。反対向きも確かめるため、Sheet2 の D2セルに次の数式を入れ、下の行までコピーします。
=IF(COUNTIF(Sheet1!A:A,A2)=0,"Aにない","")
Sheet1 に同じコードが1つもない行にだけ「Aにない」と出ます。
金額のほかに、日付や数量も比べたいときは、列ごとに同じような数式を作る必要があります。行を見分ける列が1つに決まらない(「取引先+日付」で初めて見分けられる、など)場合は、つなげた列を作ってから比べます。
「同じに見えるのに違う」と出るとき
数式は正しいのに、見た目が同じセルが「違う」になることがあります。よくある原因は次のとおりです。
- 前後に空白が入っている:「山田商事 」のように末尾に空白があると別の文字として扱われます。
TRIM関数で空白を取ってから比べます。 - 全角と半角が混ざっている:「ABC」と「ABC」、「101」と「101」は違う文字です。
ASC関数で半角にそろえられます。 - 数値と文字が混ざっている:システムから出した表では、コードの「101」が文字として入っていることがあります。見た目は同じでも VLOOKUP で見つかりません。
VALUE関数で数値に、または「区切り位置」でまとめて数値に直します。 - 同じコードが何行もある:VLOOKUP は最初に見つかった1行しか見ません。2行目以降の違いは見逃すので注意が必要です。
なお、「=」での比較は英字の大文字・小文字を区別しません。区別したいときは =EXACT(Sheet1!A1,Sheet2!A1) を使います。
数式を組まずに済ませたいとき
行の順番がバラバラで、比べたい列もたくさんある。毎月同じ作業をしている。そんなときは、数式を組むより比較ツールを使ったほうが早く、見落としも減らせます。
当サイトの表くらべは、2つのファイルを入れるだけで違うところを一覧にする無料のツールです。
- 行や列の順番がバラバラでも、同じ行・同じ列を自動で照らし合わせます
- 「Aにしかない行」「Bにしかない行」「中身が違う行」を両方向まとめて出します
- .xlsx・.xls・.csv に対応し、Excel と CSV の組み合わせでも比べられます
- ファイルはブラウザの中だけで読み込み、外には送りません
この記事の例も、ファイルを2つ入れるだけで同じ結果が出ます。登録はいりません。
表くらべで比べてみる →まとめ
- 形が同じ表なら、「=」・IF関数・条件付き書式で手早く比べられる
- 順番がバラバラなら、コードなどを手がかりに VLOOKUP と COUNTIF を両方向で使う
- 空白・全角半角・数値と文字の違いで「違う」と出ることがあるので、そろえてから比べる
- 列が多い・毎月くり返す比較は、ツールに任せると早い
「毎月の照合をボタンひとつにしたい」「自社の表に合わせた仕組みがほしい」という場合は、お仕事の依頼からご相談ください。
