チュートリアル

Google スプレッドシートで 2 つのリストを比較する方法(一致と差分)

著者 9分で読めます

Google スプレッドシートには、2 つのリストを比較するための機能がそろっています。両方にある値を強調表示したり、欠けている値に印を付けたり、自動で更新される別のリストに差分を取り出したりできます。このガイドでは、シンプルな強調表示から列全体を一度に処理する数式まで、便利な方法を紹介します。

例ではすべて リスト A が A 列、リスト B が B 列 にあり、2 行目から始まり 1 行目が見出しだとします。B2:B のような終端を指定しない範囲は下のすべての行を含むので、新しい項目も自動的に対象になります。

一度だけ比較したい場合は、2 つのリストを無料の 2 つのリスト比較ツール に貼り付ければ、数式なしで A のみ・B のみ・両方にある項目がわかります。


1. 条件付き書式で一致を強調表示

  1. A2:A を選択します。
  2. 表示形式 → 条件付き書式 を開きます。
  3. セルの書式設定の条件 で カスタム数式 を選び、次のように入力します。
=COUNTIF($B$2:$B,$A2)>0
  1. 塗りつぶしの色を選んで 完了 をクリックします。

A のうち B にない 値を強調したい場合は、代わりに次を使います。

=COUNTIF($B$2:$B,$A2)=0

B2:B にも列を入れ替えたルールを追加すれば、リスト B にも色を付けられます。数式は範囲の最初のセル($A2)を基準に書き、ほかの行はスプレッドシートが自動で調整します。


2. COUNTIF や MATCH で各項目に印を付ける

補助列を使えば、並べ替えやフィルタができる結果が得られます。C2 に次のように入力します。

=IF(COUNTIF($B$2:$B,A2)>0,"一致","不一致")

MATCH を使うと TRUE か FALSE が返ります。

=ISNUMBER(MATCH(A2,$B$2:$B,0))

数式を下までドラッグし、データ → フィルタを作成 で一致または差分だけを表示します。


3. 1 つの数式で列全体をチェック(ARRAYFORMULA)

数式を各行にコピーする代わりに、C2 に ARRAYFORMULA を 1 つ入れるだけで列全体が埋まり、後から追加した行も対象になります。

=ARRAYFORMULA(IF(A2:A="",,IF(COUNTIF(B2:B,A2:A)>0,"一致","不一致")))

IF(A2:A="",,…) の部分で、空の行は「不一致」で埋めずに空白のままにします。


4. 一致・差分を新しいリストに抽出(FILTER)

FILTER はどちらかのリストが変わると自動で更新されるリストを返します。A のうち B にもある 値:

=FILTER(A2:A,A2:A<>"",COUNTIF(B2:B,A2:A)>0)

A のうち B にない 値:

=FILTER(A2:A,A2:A<>"",COUNTIF(B2:B,A2:A)=0)

A2:A<>"" の条件が重要です。これがないと、A の空行が B の空行と「一致」として数えられてしまいます。重複を除いて並べ替えるには、UNIQUE と SORT で囲みます。

=SORT(UNIQUE(FILTER(A2:A,A2:A<>"",COUNTIF(B2:B,A2:A)=0)))

数式の A と B を入れ替えれば、リスト B にだけある値が得られます。


5. XLOOKUP や VLOOKUP で一致したデータを取り出す

リスト B に関連データ(例:C 列の価格)がある場合、XLOOKUP は一致した項目ごとにその値を返します。

=XLOOKUP(A2,$B$2:$B,$C$2:$C,"見つかりません")

VLOOKUP も使えます。完全一致にするため、最後の引数は必ず FALSE にしてください。

=IFERROR(VLOOKUP(A2,$B$2:$C,2,FALSE),"見つかりません")

6. 2 つの列を行ごとに比較

リストが横に並んでいて、各行が隣と一致するかを知りたい場合:

=IF(A2=B2,"同じ","異なる")

= は大文字と小文字を区別しません。区別したい場合は EXACT を使います。

=IF(EXACT(A2,B2),"同じ","異なる")

異なる行に色を付けるには、A2:B を選択し、カスタム数式 =$A2<>$B2 で条件付き書式のルールを追加します。


7. 別々のシートにあるリストを比較

通常のセルでは、もう一方のシートを直接参照できます。

=IF(COUNTIF(シート2!$A$2:$A,A2)>0,"一致","不一致")

条件付き書式のルールでは別シートを直接参照 できない ため、範囲を INDIRECT で囲みます。

=COUNTIF(INDIRECT("シート2!A2:A"),$A2)>0

シート2 はご自身のシート名に置き換えてください。名前にスペースが含まれる場合は、単一引用符で囲みます:INDIRECT("'旧顧客'!A2:A")。


よくある問題と解決方法

  • 余分なスペース: "Apple " と "Apple" は一致しません。データを選択して データ → データ クリーンアップ → 空白文字を削除 を使います。
  • 同じリスト内の重複: 先に データ → データ クリーンアップ → 重複を削除 を使うか、結果を UNIQUE で囲みます。
  • 大文字と小文字: COUNTIF、MATCH、XLOOKUP、VLOOKUP は区別しません。大文字小文字を区別して存在を確認するには =SUMPRODUCT(--EXACT($B$2:$B$100,A2))>0 を使います。
  • 数値と文字列: 数値と、同じ数字を文字列として保存したものは一致しません。表示形式 → 数字 で両方の列を同じ形式にするか、=VALUE(A2) で変換します。

まとめ

方法 結果 向いている用途
条件付き書式(COUNTIF) 一致・差分に色付け すばやい目視確認
COUNTIF / MATCH の補助列 一致 / 不一致の表示 並べ替えとフィルタ
ARRAYFORMULA 列全体の判定 増え続けるリスト
FILTER(+ UNIQUE、SORT) 一致・差分の自動更新リスト 結果の抽出
XLOOKUP / VLOOKUP もう一方のリストの関連データ 他の列も必要な照合
行ごとの比較(= / EXACT) 行ごとに同じ / 異なる 並びがそろった 2 列
条件付き書式での INDIRECT シートをまたいだ強調表示 別タブにあるリスト

Excel をお使いの場合は Excel で 2 つのリストを比較する方法 をご覧ください。数式なしで一度だけ確認したいなら、オンラインのリスト比較ツール が便利です。

タグ

#Google スプレッドシート#リスト比較#チュートリアル

著者について

songshiqiang個人開発者

AI ツールを使って面白いウェブサイトを開発しています。

関連記事

チュートリアル

Java で 2 つのリストを比較する方法(共通・欠けている・等しい要素)

Java で 2 つのリストを比較する方法。順序を考慮した・しない等価判定、retainAll による共通要素の抽出、removeAll や Stream による差分の抽出、オブジェクトのリストの比較、よくあるパフォーマンスの落とし穴まで解説します。

10分で読めます
#Java#リスト比較#チュートリアル
続きを読む
チュートリアル

Python で 2 つのリストを比較する方法(サンプルコード付き)

Python で 2 つのリストを比較する完全ガイド。集合で共通・差分の要素を求める方法、リスト内包表記で順序を保つ方法、リストが等しいかの判定、要素ごとの比較、辞書のリストの比較、pandas による大規模データの処理まで解説します。

12分で読めます
#Python#リスト比較#チュートリアル
続きを読む
チュートリアル

Excel で 2 つのリストを比較する方法(一致と差分を見つける)

Excel で 2 つのリストを比較する 9 つの方法。条件付き書式で一致を強調表示し、COUNTIF や MATCH で判定し、VLOOKUP や XLOOKUP で検索し、FILTER で抽出し、行ごとに比較し、大量データは Power Query で処理します。

12分で読めます
#Excel#リスト比較#XLOOKUP#チュートリアル
続きを読む