Excel で 2 つの列を比較する方法 (一致と相違)
Watch Video – Compare two Columns in Excel for matches and differences
私がよく受ける問い合わせの 1 つに、「Excel で 2 列を比較するにはどうすればよいですか?
これはさまざまな方法で行うことができ、使用する方法はデータ構造とユーザーがそれに何を求めるかに依存します。
たとえば、2 つの列を比較して、一致するすべてのデータ ポイント (両方の列にあるもの) や、相違点 (データ ポイントが一方の列にあり、他方の列にないもの) などを検索またはハイライトしたい場合があります。
このことについてよく質問されるので、(すべてではないにしても)ほとんどの可能なシナリオをカバーすることを意図して、この大規模なチュートリアルを書くことにしました。
このチュートリアルの内容:
このチュートリアルで示す列を比較するテクニックは、唯一のものではないことに留意してください。 しかし、基本原則は同じでしょう。
このチュートリアルに追加できるものがあると思う場合は、コメント欄で知らせてください
Compare Two Columns For Exact Row Match
これは比較の最も単純な形式です。 この場合、行ごとに比較を行い、どの行が同じデータを持っていて、どの行が持っていないかを識別する必要があります。
例。 同じ行のセルを比較する
以下は、A列の名前がB列で同じかどうかを確認する必要があるデータセットです。
一致した場合、私は “TRUE” として結果を必要とし、一致しない場合、私は “FALSE” として結果を必要とします。
以下の式はこれを行います:
=A2=B2
例。 同じ行のセルを比較する(IF式を使用)
よりわかりやすい結果を得たい場合は、名前が同じ場合は「一致」、名前が異なる場合は「不一致」を返す、簡単なIF式を使用することができます。
=IF(A2=B2,"Match","Mismatch")
注意:大文字と小文字を区別して比較したい場合は、次のIF式を使用します:
=IF(EXACT(A2,B2),"Match","Mismatch")
上記の式で、「IBM」と「ibm」は異なる名前とみなされ、上記の式は「Mismatch」を返します
例. 一致するデータを持つ行を強調表示する
一致するデータを持つ行を強調表示したい場合 (結果を別の列で取得するのではなく)、条件付き書式を使用してそれを行うことができます。
これを行うための手順を以下に示します。
これで各行で名前が同じすべてのセルがハイライトされるようになりました。
2つの列を比較して一致するデータをハイライトする
2つの列を比較して一致するデータをハイライトしたい場合は、条件付き書式の重複機能を使用できます。
これは、各行を比較した場合とは異なることに注意しましょう。 この場合、行ごとの比較は行いません。
例。
一致するデータがあるデータセットを取得することがよくありますが、これらは同じ行にない場合があります。 また、いくつかの名前は両方のリストにありますが、同じ行にはありません (IBM、Adobe、Walmart など)。
一致する会社名をすべて強調表示したい場合は、条件付き書式を使用してそれを行うことができます。
上記の手順は、以下のような結果になります。
注:条件付き書式の重複ルールは、大文字小文字を区別しません。 したがって、’Apple’ と ‘apple’ は同じとみなされ、重複として強調表示されます。
例。 2列を比較し、不一致のデータを強調表示する
ケースでは、一方のリストに存在し、他方ではない名前を強調表示するには、このあまりにも条件付き書式を使用することができます。
- 全体のデータセットを選択します。
- ホームタブ
- スタイルグループで、[Conditional Formatting] オプションをクリックします。
- カーソルを[セルの規則を強調表示]オプションに合わせます。
- [値の複製]をクリックします。
- [値の複製]ダイアログボックスで、[一意]が選択されていることを確認します。
- 書式を指定します。
- [OK]をクリックします。
これで、下図のような結果が得られます。 これは、他のリストに存在しない名前を持つすべてのセルを強調表示します。
2列を比較して不足しているデータポイントを見つける
一方のリストからデータポイントが他のリストに存在するかどうかを識別したい場合、ルックアップ式を使用する必要があります。
下図のようなデータセットがあり、A列に存在するがB列に存在しない企業を識別したいとします。
これを行うには、次のVLOOKUP式を使用できます。
=ISERROR(VLOOKUP(A2,$B:$B,1,0))
この式ではVLOOKUP関数を使ってA内の企業名がB列に存在するかどうかチェックします。 存在する場合はB列からその名前を返し、存在しない場合は#N/Aエラーを返します。
#N/Aエラーを返すこれらの名前は、B列にない名前です。
ISERROR関数は、VLOOKUP結果がエラーである場合はTRUE、エラーでない場合はFALSEを返すでしょう。
一致しないすべての名前のリストを取得したい場合、結果列をフィルタリングして TRUE のすべてのセルを取得できます。
また、MATCH 関数を使用して同じことを行うこともできます。
=NOT(ISNUMBER(MATCH(A2,$B:$B,0)))
注:個人的には、VLOOKUP の代わりに Match 関数を使用(あるいは INDEX/MATCH の組み合わせ)する方が気に入っています。 その方がより柔軟で強力だと思うからです。 Vlookup と Index/Match の違いについては、こちらを参照してください。
2 つの列を比較して一致するデータを取得する
2つのデータセットがあり、一方のリストの項目を他方と比較して一致するデータポイントを取得したい場合、ルックアップ数式を使用する必要があります。 一致するデータを取り出す(正確には)
例えば、下のリストで、列2の市場評価値を取り出したいとします。 これを行うには、列 1 でその値を検索し、対応する市場評価値を取得する必要があります。
以下は、これを行う式です:
=VLOOKUP(D2,$A:$B,2,0)
or
=INDEX($A:$B,MATCH(D2,$A:$A,0),2)
例。 一致するデータを取り出す(部分)
2つの列の名前にわずかな違いがあるデータセットを取得した場合、上に示したルックアップ式を使用しても動作しません。
正しい結果を得るには、これらのルックアップ式が完全に一致する必要があります。 VLOOKUP または MATCH 関数には近似一致のオプションがありますが、ここでは使用できません。
以下に示すようなデータセットがあるとします。 列 2 には完全ではない名前があることに注意してください(JPMorgan Chase ではなく JPMorgan、ExxonMobil ではなく Exxon など)。
このような場合、ワイルドカード文字を使用して部分検索を使用することができます。
=VLOOKUP("*"&D2&"*",$A:$B,2,0)
or
=INDEX($A:$B,MATCH("*"&D2&"*",$A:$A,0),2)
上記の例で、アスタリスク (*) は任意の数の文字を表すことができるワイルドカード文字です。 例えば、*Exxon* は ExxonMobil にマッチします (* は任意の数の文字を表すことができるため)。
You may also like the following Excel Tips & Tutorials:
- How to Compare Two Excel Sheets (for differences)
- How to Highlight Blank Cells in Excel.
- Highlight EVERY Other ROW in Excel.
- Excel Advanced Filter.もご覧になってみてください。
- Highlight Rows Based on a Cell Value in Excel.
A Complete Guide with Examples.