Excel

【Excel】エクセルで差分比較(2つのシート間の突合・関数・列の・データ・WinMerge活用)方法

当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

エクセルで作成したデータが更新される前と後で「どこが変わったのか」を確認したい、2つのシートやファイルを見比べて異なる箇所だけを素早く抽出したい、という場面はビジネスの現場でよくあることです。

目視で一行ずつ確認するのは時間がかかるうえ、見落としのリスクも高くなります。

エクセルには関数・条件付き書式・EXACT関数・IF関数を使った差分比較の方法が複数あり、データの規模や目的に応じて使い分けることで作業効率を大幅に高められます。

この記事では、エクセルで差分比較をする(シート間・関数・差分抽出・WinMerge活用)方法について、基本的な関数を使った比較から、シート間の差分抽出・外部ツールWinMergeの活用まで、イメージ図を交えながら丁寧に解説していきます。

ぜひ参考にしてみてください。

【結論】エクセルの差分比較はIF関数・EXACT関数・条件付き書式の3つが基本で、大規模な差分抽出にはWinMergeや専用マクロを組み合わせると効率的

それではまず、エクセルで差分比較を行う方法の全体像と、目的別に選ぶべき手段の結論について解説していきます。

差分比較の手法はデータの規模・比較する場所・求める出力内容によって使い分けるのがポイントです。

差分比較の目的別・推奨手法まとめ

2つのセルの値が同じかどうか確認したい → IF関数またはEXACT関数で「一致/不一致」を返す。最もシンプルな方法。

差分のあるセルを視覚的に色分けしたい → 条件付き書式でIF関数・EXACT関数を組み合わせて不一致セルを自動着色する。

2つのシート間で差分を一括抽出したい → 比較用の第3シートを作成し、EXACT関数やIF関数で差分フラグを立てる。

エクセルファイル同士の全体差分を確認したい → 外部ツールWinMergeを活用してファイル単位での差分を視覚的に確認する。

大量データの差分を自動処理したい → VBAマクロでループ処理を組み、差分行を別シートへ自動抽出する。

差分比較で最も重要なのは、「大文字・小文字や全半角の違いを区別するかどうか」を事前に決めておくことです。

「=A1=B1」のような単純な等号比較では大文字・小文字を区別しません。

厳密に比較したい場合はEXACT関数を使うことが必要です。

以下のイメージ図は、IF関数とEXACT関数をC2に入力し、オートフィルで下のセルに反映させて差分フラグを立てている操作例を示しています。

IF関数とEXACT関数の違いと使い分け

差分比較で使う最も基本的な関数がIF関数とEXACT関数です。

「=A1=B1」という等号比較やIF関数単体では、大文字・小文字の違いや全角・半角の違いを無視して比較が行われます。

たとえば「Excel」と「excel」は異なる文字列ですが、「=A1=B1」では「TRUE(一致)」と判定されてしまいます。

厳密に差分を比較したい場合は、大文字・小文字を区別して比較できるEXACT関数を使うことが重要です。

IF関数とEXACT関数の比較数式

等号比較(大文字・小文字を区別しない)

=IF(A2=B2,”一致”,”差分あり”)

EXACT関数(大文字・小文字を厳密に区別する)

=IF(EXACT(A2,B2),”一致”,”差分あり”)

A2が「Excel」、B2が「excel」の場合

等号比較 → 「一致」(区別しないため同一と判定)

EXACT関数 → 「差分あり」(大文字・小文字が異なるため不一致と判定)

データの内容によって使い分けることで、より正確な差分比較が実現できます。

商品コードやパスワード、システムのID管理など大文字・小文字が意味を持つデータにはEXACT関数を使うようにしましょう。

差分比較でよく使う関数の一覧

差分比較には複数の関数が活用できます。

それぞれの特徴を把握しておくと、状況に応じた最適な手法を選べます。

関数名 主な用途 大文字・小文字の区別
EXACT関数 2つの文字列を厳密に比較 区別する
IF関数+等号 条件分岐で一致・不一致を返す 区別しない
COUNTIF関数 一方のリストにあって他方にない値を検出 区別しない
VLOOKUP関数 一方のリストに存在するか照合 区別しない
IFERROR+VLOOKUP 照合エラーを「新規追加」などに変換 区別しない
SUMPRODUCT+EXACT 配列で複数セルを一括厳密比較 区別する

文字列の比較には基本的にEXACT関数、リスト間の照合にはCOUNTIFやVLOOKUPを使うという使い分けが一般的です。

条件付き書式で差分セルを自動的に色分けして視覚化する方法

続いては、差分があるセルを自動的に色付けして視覚的に一目でわかるようにする、条件付き書式を使った差分比較の方法を確認していきます。

色分けによる視覚化は、大量データのレビューや確認作業で特に力を発揮します。

条件付き書式でEXACT関数を使った差分色分けの設定手順

条件付き書式にEXACT関数を組み込むことで、差分があるセルを自動的に色付けして見分けやすくすることができます。

設定後は新たにデータが追加・変更されるたびに、自動で色が更新されるのが大きな利点です。

条件付き書式で差分セルを色分けする設定手順

① 比較元データが入っているセル範囲(例 B2:B100)を選択する

②「ホーム」タブ →「条件付き書式」→「新しいルール」をクリックする

③「数式を使用して、書式設定するセルを決定する」を選択する

④ 数式欄に以下を入力する

=NOT(EXACT(A2,B2))

⑤「書式」ボタンをクリックして「塗りつぶし」タブで目立つ色(オレンジや黄色など)を選ぶ

⑥ OKをクリックして完了する

→ AとBの内容が異なるセルだけが自動的に色付けされる

「NOT(EXACT(A2,B2))」はEXACT関数が「FALSE(不一致)」を返した場合にTRUEになる数式で、これにより不一致のセルだけを条件付き書式の対象にできます。

数式の参照セル(A2やB2)は行番号のみ変化する相対参照にしておくことで、選択範囲全体に正しく適用されます。

2つのシート間で差分を色分けして比較する方法

同一ファイル内の2つのシート間で差分を比較したい場合も、条件付き書式が活用できます。

シートをまたいで参照する場合は、数式にシート名を含めた参照を記述します。

シート間の差分比較に使う条件付き書式の数式

「新データ」シートのB2セルが「旧データ」シートのB2セルと異なる場合に色付けする例

=NOT(EXACT(旧データ!B2,B2))

設定手順

「新データ」シートの比較したいセル範囲を選択 →「条件付き書式」→「新しいルール」→「数式を使用して〜」→ 上記の数式を入力 → 書式を設定 → OK

「旧データ!B2」の「旧データ!」の部分が別シートを参照していることを示す記述

シート名にスペースや記号が含まれている場合は「’旧 データ’!B2」のようにシングルクォートで囲む必要があります。

この方法で設定すると、新データシートを見るだけで旧データから変更があったセルが一目でわかる状態になります。

以下のイメージ図は、2つのシート間で差分を比較して差分セルに色付けした状態を示しています。

📗
Microsoft Excel — シート間差分比較(条件付き書式で色分け)
ホーム
挿入
数式
データ
📋 旧データシート
A(ID)
B(担当者名)
2
001
田中 太郎
3
002
鈴木 花子
4
003
山田 一郎
📋 新データシート(差分色付き)
A(ID)
B(担当者名)
2
001
田中 太郎
3
002
鈴木 はな子 ← 差分あり(色付き)
4
003
山田 一郎
旧データ
新データ
⚡ 条件付き書式でNOT(EXACT(旧データ!B2,B2))を設定することで差分セルが自動で色付けされる

「重複の確認」機能と差分比較の活用

エクセルには「重複の確認(重複の削除)」という標準機能がありますが、これとは逆の発想で「一方にあって他方にない値」を検出する差分抽出にも使えるテクニックがあります。

COUNTIF関数を使えば、リストAにあってリストBには存在しない値を「差分」として特定できます。

COUNTIF関数でリスト間の差分を検出する数式

=IF(COUNTIF(B:B,A2)=0,”Bに存在しない”,”一致あり”)

→ A列の各値がB列に存在するかを確認し、存在しなければ「Bに存在しない」と表示する

逆方向の確認

=IF(COUNTIF(A:A,B2)=0,”Aに存在しない”,”一致あり”)

→ B列の各値がA列に存在するかを確認する

新規追加された行・削除された行の特定に有効

このCOUNTIF方式は、行の並び順が異なる2つのリスト間での差分検出に特に有効です。

EXACT関数を使った単純な行比較では並び順が一致していないと正しく比較できませんが、COUNTIF方式では順序に関係なく値の存在を確認できます。

関数を組み合わせてシート間の差分を自動抽出する方法

続いては、複数の関数を組み合わせてシート間の差分データを自動的に別シートへ抽出する、より実践的な差分比較の方法を確認していきます。

差分を色分けするだけでなく、差分のある行だけを一覧として抽出できると、修正作業や報告がずっとスムーズになります。

差分フラグを立てて差分行をフィルターで抽出する

最もシンプルな差分抽出の方法は、差分比較の結果列(フラグ列)を作成し、オートフィルターで「差分あり」の行だけを絞り込む手法です。

差分フラグを使った差分行抽出の手順

① 比較結果を表示するD列を追加し、D2に以下の数式を入力する

=IF(EXACT(旧データ!B2,B2),”一致”,”差分あり”)

② D2のフィルハンドルを最終行までドラッグしてオートフィルする

③ D列のヘッダーを選択して「データ」タブ →「フィルター」をオンにする

④ D列のフィルタードロップダウンで「差分あり」だけにチェックを入れる

⑤「差分あり」の行だけが表示されるので、必要に応じてコピーして別シートに貼り付ける

この方法は操作が直感的でわかりやすく、エクセルの基本機能だけで完結する点が大きなメリットです。

ただし、フィルターで絞り込んだ後に別シートへ手動でコピーする手間が必要になります。

件数が少ない場合はこのフィルター方式が最も手軽です。

FILTER関数で差分行を自動的に別シートへ抽出する(Excel365・2019以降)

Excel365またはExcel2019以降であれば、FILTER関数を使うことで差分行を別シートへ動的に自動抽出できます。

FILTER関数は条件に合う行だけを抽出して表示する関数で、元データが更新されると自動的に抽出結果も更新されます。

FILTER関数で差分行を動的に抽出する数式

=FILTER(新データ!A2:D100,新データ!D2:D100=”差分あり”,”差分なし”)

→ 新データシートのD列が「差分あり」の行のみをA〜D列まとめて抽出する

→ 差分がない場合は「差分なし」と表示する

D列はEXACT関数で事前に差分フラグを立てておく

FILTER関数の結果は元データと動的に連動するため、元データが変わると自動更新される

FILTER関数の最大のメリットは、元データの更新に対して抽出結果がリアルタイムで追随することです。

差分確認を定期的に行う業務では、一度FILTER関数で差分抽出シートを設定しておけば、以後は元データを更新するだけで差分一覧が自動更新されます。

VBAマクロで差分行を自動抽出して別シートに書き出す方法

件数が多い場合や操作を完全自動化したい場合は、VBAマクロを使って差分行を別シートへ自動書き出しする方法が効果的です。

差分行を別シートへ自動抽出するVBAコードの基本構造

Sub 差分抽出()

Dim wsOld As Worksheet, wsNew As Worksheet, wsDiff As Worksheet

Dim i As Long, lastRow As Long, diffRow As Long

Set wsOld = Sheets(“旧データ”)

Set wsNew = Sheets(“新データ”)

Set wsDiff = Sheets(“差分結果”)

wsDiff.Cells.ClearContents

lastRow = wsNew.Cells(Rows.Count,1).End(xlUp).Row

diffRow = 2

For i = 2 To lastRow

If wsOld.Cells(i,2).Value <> wsNew.Cells(i,2).Value Then

wsNew.Rows(i).Copy wsDiff.Rows(diffRow)

diffRow = diffRow + 1

End If

Next i

MsgBox diffRow – 2 & “件の差分を抽出しました。”

End Sub

このコードは旧データと新データのB列を比較し、内容が異なる行を「差分結果」シートへコピーする

VBAを使った差分抽出は、数千・数万行のデータでも素早く処理できる点が関数方式との大きな違いです。

定期的なデータ照合業務では、マクロをボタンに割り当ててワンクリックで実行できる環境を整えておくことで、作業時間を大幅に短縮できます。

WinMergeを活用したエクセルファイル間の差分比較方法

続いては、エクセル内の関数だけでは対応しにくいファイル全体の差分比較に威力を発揮する、外部ツール「WinMerge」の活用方法を確認していきます。

WinMergeはWindowsで使える無料の差分比較ツールで、エクセルファイルを含むさまざまな形式のファイルを視覚的に比較できます。

WinMergeとは何か・エクセルとの相性

WinMerge(ウィンマージ)は、2つのファイルやフォルダの差分を視覚的に表示するオープンソースのソフトウェアです。

テキストファイルやCSVファイルに対しては行単位・文字単位で差分をハイライト表示することが得意で、エクセルのxlsxファイルも「Excel差し込み」プラグインを有効にすることで直接比較できます。

エクセル内の関数や条件付き書式による差分比較では、シートやセルを選択して設定する手間が必要ですが、WinMergeを使えばファイルを指定するだけで全体の差分が一覧表示されます。

特に複数シートにまたがる変更や、どのシートが変わったかをファイル全体で確認したい場合に非常に有用なツールです。

WinMergeでエクセルファイルを比較する手順

WinMergeを使ったエクセルファイルの差分比較は、以下の手順で行えます。

WinMergeでエクセルファイルを比較する手順

① WinMergeの公式サイト(winmerge.org)から最新版をダウンロードしてインストールする

② WinMergeを起動し「ファイル」→「開く」をクリックする

③「左側」に旧バージョンのエクセルファイルを指定し「右側」に新バージョンのエクセルファイルを指定する

④「OK」をクリックすると差分が色分けで表示される

⑤ 差分のある行は黄色・変更された文字は赤で強調表示される

⑥「次の差分へ」ボタンで差分箇所を順番に確認できる

WinMergeでエクセルファイルを比較する際は、比較前にエクセルファイルをCSV形式で保存しておくと、より詳細な文字レベルの差分が確認しやすくなります。

シートごとにCSVを書き出してWinMergeで比較する方法は、大量のデータが含まれるシートの全体把握に特に有効です。

以下のイメージ図は、WinMergeでの差分比較の概念と、エクセルでのCSV出力手順を示しています。

📗
Microsoft Excel — WinMerge比較のためのCSV出力手順
ファイル ← クリック
ホーム
挿入
データ
情報
ホーム
名前を付けて保存 ← ここ
印刷
オプション
名前を付けて保存
ファイルの種類を選択する
CSV(カンマ区切り)(*.csv) ← WinMerge比較用に選択

① 「ファイル」タブ →「名前を付けて保存」をクリック

② 「ファイルの種類」のドロップダウンで「CSV(カンマ区切り)」を選択

③ ファイル名を「旧データ_シート名.csv」のように付けて保存

④ 新データも同様にCSV保存する

⑤ WinMergeで2つのCSVファイルを開いて比較する

▲ CSV形式で保存することでWinMergeが文字レベルまで詳細に差分を表示できる
⚡ 比較したいシートをそれぞれCSVで保存 → WinMergeで開くと差分が色分け表示される

差分比較ツールの選び方と使い分け

差分比較の方法は複数あるため、状況に応じた最適な手法を選ぶことが作業効率向上のカギです。

方法 向いている場面 難易度
EXACT関数+IF関数 同一シート内の列間比較・少量データ ★☆☆(簡単)
条件付き書式+EXACT 差分セルを色分けして視覚的に確認したい ★★☆(中程度)
FILTER関数での自動抽出 定期更新されるデータの差分を動的に管理 ★★☆(中程度)
VBAマクロ 大量データの差分を定期的に自動処理 ★★★(上級者向け)
WinMerge(CSV比較) ファイル全体の差分・複数シートにまたがる変更の確認 ★☆☆(インストール後は簡単)

少量データや日常的な確認にはEXACT関数と条件付き書式の組み合わせが最も手軽です。

定期的な大量データの差分管理にはFILTER関数かVBAマクロが適していて、ファイル全体を俯瞰したい場合はWinMergeが効果的です。

まとめ エクセルで2つのシート間の突合(関数・列の・データ・WinMerge活用)方法

この記事では、エクセルで差分比較をする(シート間・関数・差分抽出・WinMerge活用)方法について、基本的な関数の使い方からシート間の差分色分け・差分行の自動抽出・WinMergeの活用まで幅広く解説しました。

差分比較の基本はEXACT関数とIF関数の組み合わせで、大文字・小文字を含む厳密な比較が必要な場面ではEXACT関数を積極的に使うことが重要です。

条件付き書式を使えば差分セルを自動で色分けでき、FILTER関数やVBAマクロを活用すれば差分行を別シートへ自動抽出することも可能になります。

ファイル全体・複数シートにまたがる差分確認にはWinMergeとCSV変換の組み合わせが最も効率的で、「データの規模・確認の頻度・必要な精度」の3軸で手法を選ぶことが差分比較を効率化するポイントです。

今回の内容を活用して、エクセルでの差分比較作業をよりスムーズに進めていただけますと幸いです。