Excelのリスト比較で差分を見つけたいとき、AIに渡すべきは『比較したい2つの表』
VLOOKUPやMATCH関数を組み合わせて、2つのリストの差分をあぶり出そうとしていないか。この記事を読めば、複雑な数式を一切使わずに、2つの表をAIに放り込んで瞬時に差分を特定する手順がわかる。
VLOOKUPの入れ子で消耗する前に
以前、後輩の田島から「昨月の売上リストと今月のリストを突合して、差があるものだけ教えてください」とチャットが飛んできた。依頼文は相変わらず雑で、ファイル名すら不正確だったが、私はいつものようにExcelを開き、VLOOKUPとIF関数を組み合わせた複雑な数式を組み始めた。
しかし、途中で気づいたのだ。A列のIDには表記揺れがあり、B列の名称には余計なスペースが含まれている。数式を修正し、エラーを潰し、ようやく結果が出たときには、すでに締切の1時間前だった。あの時、関数と格闘して時間を溶かしていた自分に、「そのままAIに投げればよかったんだぞ」と言ってやりたい。数式を組むのは、構造が完全に整理されたデータに対して行うべき作業だ。不完全なデータや、一度きりの突合作業にまで、そんな労力をかける必要はない。
2つのリストをAIに読み込ませる最短の手順
差分を見つけたいときは、Excel上で関数を組むのではなく、比較したい「表A」と「表B」をそのままコピーしてAIのチャット欄に貼り付ける。これだけでいい。
具体的な手順は以下の通りだ。
1. 比較元となるリスト(表A)をコピーする。
2. 比較先となるリスト(表B)をコピーする。
3. AIに対して「表Aにはあるが表Bにはないもの」といった指示とともに、2つのデータを貼り付ける。
以下に、作業のイメージとしてサンプルを用意した。
| 項目ID (表A) | 商品名 (表A) | 単価 (表A) | 項目ID (表B) | 商品名 (表B) | 単価 (表B) |
|---|---|---|---|---|---|
| 101 | ノート | 100 | 101 | ノート | 100 |
| 102 | ペン | 50 | 103 | 消しゴム | 30 |
| 103 | 消しゴム | 30 | 104 | 定規 | 80 |
| 104 | 定規 | 80 |
このように、2つの表が横に並んでいなくても、あるいは縦に並んで貼り付けられても、AIは文脈から「どちらが比較元で、どちらが比較先か」を理解できる。
指示の精度を上げるプロンプトの構成要素
単に「比較して」とだけ伝えると、AIは「何に注目して比較すべきか」に迷い、結果として使い物にならない回答を返すことがある。差分を正確に抽出させるには、必ず「照合のキー(一意のIDなど)」を指定すること。これが失敗を防ぐ最大のコツだ。
以下のプロンプトをコピーして、自分のデータに合わせて書き換えて使ってほしい。
パターン1:欠落しているデータを見つけたい場合
「表A」と「表B」の差分を抽出する指示だ。
# 指示以下の2つのリストを比較し、[項目ID]をキーにして、[表A]には存在するが[表B]には存在しないデータをすべて抽出してください。
# 出力形式
差分が見つかった場合のみ、以下の形式で出力してください。
- ID:[項目ID]
- 名称:[商品名]
# データ
【表A】
[ここに表Aを貼り付け]
【表B】
[ここに表Bを貼り付け]
パターン2:値が変更されている箇所を見つけたい場合
「IDは同じだが、金額や名称が変わっているもの」を探す指示だ。
# 指示以下の2つのリストを比較し、[項目ID]をキーにして、[表A]と[表B]の間で[単価]の値が異なっているデータをすべて抽出してください。
# 出力形式
- ID:[項目ID]
- 表Aの単価:[表Aの単価]
- 表Bの単価:[表Bの単価]
# データ
【表A】
[ここに表Aを貼り付け]
【表B】
[ここに表Bを貼り付け]
ここでよくある失敗は、キーとなる列を指定しないことだ。「商品名で比較して」と指示すると、一文字のスペースの有無だけで「別物」と判定され、大量の誤検知が発生する。必ず、重複のない「ID」や「管理番号」をキーとして指定すること。
社内データを守りつつAIを活用する伏せ字のルール
ここからは、情シスの及川さんに「セキュリティはどうなっているんだ」と詰められないための準備だ。社内の生データをそのままChatGPTなどの外部AIに投げるのは、たとえ個人の業務であってもリスクがある。
データを渡す前に、必ず以下の手順で「匿名化」を行ってほしい。
1. 固有名詞の置き換え: 顧客名や担当者名は、「顧客A」「顧客B」あるいは「佐藤様」→「担当者1」のように置換する。
2. 数値の相対化: 正確な金額が不要な場合は、金額をすべて10倍にする、あるいは「1,000円」を「1」とするなど、比率が変わらないように加工する。
3. IDのランダム化: 顧客番号などの重要なIDは、適当な数字(1, 2, 3...)に書き換える。
「差分を見つける」という目的において、重要なのは「データの中身(具体的に誰がいくら払ったか)」ではなく、「構造(どのIDが消えたか、どの値が変わったか)」である。中身を隠しても、構造さえ維持していればAIは正しく仕事をこなしてくれる。
関数を組むべきケースとAIに投げるべきケースの境界線
ここで少し、判断に迷う場面がある。
「数式を組んでExcel内で完結させる方法(方法A)」と、「データをAIに渡す方法(方法B)」のどちらを選ぶべきか。
私はこれまで、どちらが優れているか何度も検討してきた。結論から言えば、判断基準は「データの件数」と「再現性の必要性」の2点だ。
- 方法A(関数・数式)を使うべきケース
- データが500行を超えている場合(AIの入力制限に触れる可能性がある)。
- 監査や上長への報告のために、「どの数式でこの結果を出したか」という証跡を残す必要がある場合。
- 一度作れば、来月も同じ手順で自動化できるルーチンワークの場合。
- 方法B(AIへの丸投げ)を使うべきケース
- データが数百行程度で、使い捨ての作業である場合。
- データの形式がバラバラで、数式を組むためのクレンジング(余計な空白の削除など)に時間がかかりそうな場合。
- 「何が違うか」を、人間が読みやすい自然言語のレポート形式でまとめてほしい場合。
現場では、どちらか一方が正解というわけではない。及川さんのような情シス担当は、常に「正しい手順」を求めるが、我々実務家に必要なのは「期限内に、正確な結果を出すこと」だ。
まずはAIに放り込んでみて、もしデータの量に限界を感じたり、結果の検証が追いつかなかったりしたときに初めて、Excelの関数に向き合えばいい。
さて、コーヒーを飲み干したら、次はあの「いい感じにやっといて」と言ってきた部長への報告書を作成するとしよう。