
<新規・削除・変更の差分を一発抽出!>
【Excel】Power Queryで
新旧データの差分をまとめて出す
公開日
今回は、Excelに標準装備されているPower Queryを使って、簡単に差分チェックをする方法をご紹介します。
例えば、次のような作業で使えます。
- 今月と先月の顧客マスターを比較して、住所や担当者が変わった顧客を洗い出したい
- 在庫リストの更新前後で、価格変更があった商品を特定したい
- 提出された名簿と前回の名簿を突き合わせて、新規・削除・変更を一覧化したい
差分抽出の設定の流れ
- <Excel> 新規Excelファイルを作成する
- <Excel> 新・旧ファイルをそれぞれ取り込む
- <Power Query>マージを設定する
- 新規分の抽出:キーでマージ(左反)
- 削除分の抽出:キーでマージ(右反)
- 変更箇所抽出:キーでマージ(内部)+カスタム列
架空の取扱商品のマスターシートを用意しました。この2つのマスターシートを使って、簡単に差分を抽出する設定の方法を説明します。
ダウンロードして一緒に作業をしながら確認をしていただくこともできます。
項目は、「商品ID、商品名、カテゴリ、単価、仕入先コード、在庫区分」があり、それぞれ記載されています。
新・旧データをExcelに取り込む
最初に、「サンプル9月」を取り込みます。
- 新規のExcelを開く
- データ > データの取得 >ファイルから > Excelブックから を選ぶ
- ウィンドウが開くので、取得するファイル「サンプル9月」を選択して、インポート をクリックする
- ナビゲーターが開くので、「Sheet1」を選択、データの変換 をクリックする
- Power Queryエディターが開くので、クエリの設定で、クエリの名前を「一つ前」に変更する
- ホーム > 閉じて読み込む > 閉じて次に読み込む をクリック、接続の作成のみ を選択、一度Power Queryエディターを閉じる
✅接続のみを選択したので、Excelシートに特に変化はありません。
次に、「サンプル10月分」のファイルを取得します。
2~ 5 の手順で、「サンプル10月分」のファイルを取得して、クエリの名前を「最新分」にします。
その後、6 の手順で閉じて、Excelも一度上書き保存をしておきましょう。

✅これで、Power Queryのエディターには、<一つ前>と<最新分>のクエリができました。
比較するデータを取得して、準備完了です。
新規データを抽出する
Power Queryエディタを開いて作業を続けます。
- <最新分>を選択し、右クリックで参照を選択する
- <最新分(2)>ができるので、名前を「新規」に変更する
- <新規>を選んだ状態で、
ホーム → クエリのマージ → クエリのマージ* を選択する - マージを設定する
- 上のテーブル:新規
- 下のテーブル:一つ前
- 両方とも「商品ID」を選択(「商品ID」がキー)
- 結合の種類:左反 (<最新分>にあるが、<一つ前>にはない行を抽出)
- OKをクリックする
- 「一つ前」列の
を展開する
*マージ:数式を使わないで、別の表から情報を紐づけすること
👈Click! ちょっと脱線・・・結合の種類ってなに?
削除データを抽出する
<新規>と同じ手順で設定します。クエリの名前と結合の種類の設定が異なります。
- <最新分>を選択し、右クリックで参照を選択する
- <最新分(2)>ができるので、名前を「削除」に変更する
- <削除>を選んだ状態で、
ホーム > クエリのマージ > クエリのマージ を選択する - マージを設定する
- 上のテーブル:削除
- 下のテーブル:一つ前
- 両方とも「商品ID」を選択(「商品ID」がキー)
- 結合の種類:右反 (<一つ前>にあるが、<最新分>にはない行を抽出)
- OKをクリックする
- 「一つ前」列の
を展開する
閉じて読み込む > 閉じて読み込む で一度保存をしましょう。
✅クエリ名と同じシートができました。新規、削除のアイテムだけがそれぞれのシートに抽出されました。

2つのクエリの変更箇所を抽出する
Power Queryエディターで、以下の設定を追加します。
- <最新分>を選択し、右クリックで参照を選択する
- <参照(2)>ができるので、名前を「比較」に変更する
- <比較>を選んだ状態で、
ホーム > クエリのマージ > クエリのマージ を選択する - マージを設定する
- 上のテーブル:比較
- 下のテーブル:一つ前
- 両方とも「商品ID」を選択(「商品ID」がキー)
- 結合の種類:内部 (<最新分>と<一つ前>の両方に存在する行を抽出)
- OKをクリックする
- 「一つ前」列の
を展開する
念のため、閉じて読み込む > 閉じて読み込む で保存しておきましょう。
✅「比較」クエリで、<最新分>と<一つ前>の両方にあるデータが紐づきました。
再度Power Queryエディターを開き、<比較>クエリで作業を続けます。
”魔法”の式で、変更箇所を抽出する【カスタム列】
変更箇所の抽出には、カスタム列を追加します。
カスタム列の ”魔法”の式は、生成AIなどに聞くとすぐに答えてくれます。
①変更箇所を抽出する式
- <比較>を選択し、列の追加 > カスタム列 をクリックする
- 新しい列名を「変更箇所」に変更する
- カスタム列の式に下の式をそのままペーストし、OKをクリックする
Text.Combine(
List.Select(
Table.ColumnNames(ソース),
(col) => Record.Field(_, col) <> Record.Field(_, "一つ前." & col)
),
", "
)
👆<最新分>と<一つ前>のデータの異なる値を抽出する式
②前の値を抽出する式
同じ手順で、もうひとつカスタム列を設定します。
- 新しい列名:「前の値」
- カスタム列の式:
Text.Combine(
List.Transform(
List.Select(
Table.ColumnNames(ソース),
(col) =>
Record.Field(_, col) <>
Record.Field(_, "一つ前." & col)
),
(col) =>
Text.From(
Record.Field(_, "一つ前." & col)
)
),
", "
)
👆<一つ前>と<最新分>とが異なる列の<一つ前>の値をカンマ区切りでつなげる式
これで、変更箇所と前の値が抽出できます。
- 変更箇所:変更があった列名
- 前の値:変更前の値

ホーム > 閉じて読み込む をクリックして、Power Queryエディターを閉じましょう。
✅Power Queryエディタで作ったクエリ名と同じ名前のシート(新規、削除、比較)が作成されました。
次回、同じフォームを使って差分を出したいとき、Power Queryエディターを開いて、<一つ前>と<最新分>のソースを変更するだけでOKです。
Power Queryを閉じた後、Excelの データ >すべて更新 >すべて更新 をクリックするとデータが更新されます。
例)今回は「サンプル9月」「サンプル10月分」だったけど、「サンプル10月」「サンプル11月分」をチェックしたい、という場合
お試し用に、サンプル11月分も準備しましたので、気になる方は試してみてください。

以上、Power Queryで簡単に差分チェックをする方法をご紹介しました。
最初は少し難しく感じる設定もあったかもしれませんが、一度設定してしまえば、Power Queryは忠実なアシスタントとして働き続けてくれます。
今回ご紹介した”魔法”を使って、定型的な業務を自動化してしまいましょう。
Power Queryって便利だなと思っていただけたら、ぜひご自身の業務にもこの”魔法”を応用してみてください。















