大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAもしくは、パワークエリを使って、2つのシートを比較して、過不足データの確認や、不一致のデータを塗りつぶしする方法について、ご紹介します。2つのシートを比較したい場合は、「完全外部」で比較すると便利です。2つのシートを比較する方法について、マスターしていきましょう。

はじめに

この記事では、2つのシートを比較する方法として、Excel VBAを使う方法と、パワークエリを使う方法をご紹介します。

2つのシートを比較するには、「完全外部」で比較すると便利です。

「完全外部」は、2つのシートのすべてのデータを一覧にして、比較する方法になります。

2つのシートの過不足の判定と、不一致のデータの確認が簡単にできるようになります。

VBAやパワークエリを使って、2つのシートを比較する方法をマスターしていきましょう。

では、2つのシートを比較する方法について、解説していきます。

この記事を読むメリット

  • Excel VBAもしくはパワークエリを使って、2つのシートを比較して、過不足データの確認や、不一致の値を確認することができるようになります。

本記事の内容を動画でまとめています

目次から見たい項目へ移動すると便利ですよ。

目次

2つのシートを比較して不一致を塗りつぶししたい

2つのシートを比較して、不一致を塗りつぶししてみます。

2つのシートを比較する

2つのシートを比較する方法は、「完全外部」で比較します。

イメージは次のようになります。

2つのシートを比較するイメージ

2つのシートを比較するイメージになります。

2つのシートを比較するイメージになります

すべてのデータを表示して、比較します。

すべてのデータを表示して、比較します

2つのシートのすべての値を表示して、比較をするという感じです。

シートで比較のイメージをみてみます。

過不足を判定したい

2つのシートのデータを比較して、過不足を判定したいです。

2つのシートのデータを比較して、過不足を判定したいです

データの過不足は、商品をキーにして、比較をします。

データの過不足は、商品をキーにして、比較をします

2つのシートを比較して、こんな感じで比較したいです。

2つのシートを比較して、こんな感じで比較したいです

一致する値は、同じ行に表示して比較します。

一致する値は、同じ行に表示して比較します

過不足のあるデータでは、もう一方のデータは空欄となります。

過不足のあるデータでは、もう一方のデータは空欄となります

という感じで、2つのシートのすべて値を表示して、商品をキーにしてデータの過不足を確認します。

不一致のデータを塗りつぶしする

データの過不足を確認したら、値の不一致を確認します。

値の不一致を確認したい

データの過不足を確認したら、値の不一致を確認します

次のように、不一致のデータは塗りつぶしをします。

不一致のデータを塗りつぶし

不一致のデータは塗りつぶしをします

「商品」が一致した値で、不一致の「価格」と「数量」を塗りつぶしするという感じです。

VBAを使ってシートを比較して不一致を塗りつぶし

VBAを使ってシートを比較して、不一致を塗りつぶししてみます。

2つのシートを比較

まずは、2つのシートを比較していきます。

2つのシートを比較したい

2つのシートを比較したいです

2つのシートを比較するVBAコードになります。

Sub TEST1()
  
  'Sheet1のデータを比較シートに転記
  With Sheets("Sheet1").Range("A1").CurrentRegion.Offset(1, 0)
    .Resize(.Rows.Count - 1).Copy Sheets("比較").Range("A2")
  End With
  
  Dim Flag
  Flag = 0
  'Sheet2のデータをループ
  For i = 2 To Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
    Flag = 0
    '比較シートをループ
    For j = 2 To Sheets("比較").Cells(Rows.Count, "A").End(xlUp).Row
      '商品が一致する行を検索
      If Sheets("比較").Cells(j, "A") = Sheets("Sheet2").Cells(i, "A") Then
        Sheets("比較").Cells(j, "D") = Sheets("Sheet2").Cells(i, "A") '商品
        Sheets("比較").Cells(j, "E") = Sheets("Sheet2").Cells(i, "B") '価格
        Sheets("比較").Cells(j, "F") = Sheets("Sheet2").Cells(i, "C") '売上
        Flag = 1 '一致する商品がある場合
        Exit For
      End If
    Next
    '一致する商品がない場合
    If Flag = 0 Then
      '最終行の1行下に値を入力
      With Sheets("比較").Range("A1").CurrentRegion
        .Cells(.Rows.Count + 1, 4) = Sheets("Sheet2").Cells(i, "A") '商品
        .Cells(.Rows.Count + 1, 5) = Sheets("Sheet2").Cells(i, "B") '価格
        .Cells(.Rows.Count + 1, 6) = Sheets("Sheet2").Cells(i, "C") '個数
      End With
    End If
  Next
        
End Sub

では、ポイント毎に実行して、手順をみてみます。

Sheet1の値を、比較シートに転記をします。

Sheet1の値を比較シートに転記

Sheet1の値を、比較シートに転記をします

次は、比較シートとSheet2の値を比較していきます。

比較シートとSheet2の値を比較していく

比較シートの値と、Sheet2の値を比較していきます。

比較シートの値と、Sheet2の値を比較していきます

一致する値がある場合は、同じ行に転記をします。

一致する値がある場合は、同じ行に転記をします

一致する値がない場合は、最終行+1行目に転記をします。

一致する値がない場合は、最終行+1行目に転記をします

同じように、一致する値がない場合は、最終行+1行目に転記をします。

同じように、一致する値がない場合は、最終行+1行目に転記をします

一致する値がある場合は、同じ行に転記をします。

一致する値がある場合は、同じ行に転記をします

一致する値がある場合は、同じ行に転記をします。

一致する値がある場合は、同じ行に転記をします

これで、2つのシートを比較できます。

2つのシートを比較できた

2つのシートを比較できました

2つのシートを比較できました。

不一致を塗りつぶし

次は、商品のデータが一致する行で、「価格」と「数量」の不一致を塗りつぶしをしていきます。

不一致の値は塗りつぶし

過不足がない行で、不一致の確認をします

商品のデータが一致する行で、不一致の確認をするVBAコードになります。

Sub TEST2()
  
  Dim A
  With Sheets("比較").Range("A1").CurrentRegion
    '価格と売上をループ
    For Each A In .Resize(.Rows.Count - 1, 2).Offset(1, 1)
      '不一致の場合
      If A <> A.Offset(0, 3) Then
        '空白ではない場合
        If A <> "" And A.Offset(0, 3) <> "" Then
          A.Interior.Color = RGB(255, 255, 0) '塗りつぶし
          A.Offset(0, 3).Interior.Color = RGB(255, 255, 0) '塗りつぶし
        End If
      End If
    Next
  End With
  
End Sub

では、実行してみます。

価格と個数のデータをループして、不一致の確認をしていきます。

価格と個数のデータをループして比較

価格と個数のデータをループして、不一致の確認をしていきます

実行すると、不一致の確認ができます。

不一致を塗りつぶしできた

不一致の確認ができました

不一致の確認ができました。

パワークエリを使ってシートを比較して不一致を塗りつぶし

パワークエリを使ってシートを比較して、不一致を塗りつぶししてみます。

不一致の塗りつぶしは、VBAを使います。

2つのシートを比較

やりたい内容としては、先ほどと同じで、2つのシートを比較したいです。

2つのシートを比較したい

2つのシートを比較したいです

では、パワークエリを使って、2つのシートを「完全外部」で結合して、比較してみます。

Sheet1からクエリを作成していきます。

Sheet1からクエリを作成

表を選択して、「データ」タブの「テーブルから」を選択します。

表を選択して、「データ」タブの「テーブルから」を選択します

テーブルの作成画面が出てきますので、OKをクリックです。

テーブルの作成画面が出てきますので、OKをクリックです

Sheet1のデータからクエリを作成できます。

Sheet1のデータからクエリを作成できました

閉じて読み込むをクリックします。

閉じて読み込むをクリックします

新規シートにクエリを読み込めます。

新規シートにクエリを読み込めました

Sheet1からクエリを作成できました。

次は、Sheet2からクエリを作成していきます。

Sheet2からクエリを作成

表を選択して、「データ」タブの「テーブルから」をクリックします。

表を選択して、「データ」タブの「テーブルから」をクリックします

テーブルの作成画面が表示されますので、OKをクリックです。

テーブルの作成画面が表示されますので、OKをクリックです

Sheet2のデータからクエリを作成できます。

Sheet2のデータからクエリを作成できました

閉じて読み込むをクリックします。

閉じて読み込むをクリックします

新規シートにクエリが読み込まれます。

新規シートにクエリが読み込まれます

Sheet2のクエリは不要なので、削除します。

Sheet2のクエリは不要なので、削除します

シートのところで右クリックして、「削除」をクリックします。

シートのところで右クリックして、「削除」をクリックします

メッセージが表示されますので、削除をクリックです。

メッセージが表示されますので、削除をクリックです

シートを削除できます。

シートを削除できました

シートを削除できました。

次は、2つのクエリを「完全外部」で結合していきます。

クエリの結合

ブッククエリの画面から、「テーブル1」をダブルクリックします。

ブッククエリの画面から、「テーブル1」をダブルクリックします

Power Queryエディターが表示されます。

Power Queryエディターが表示されます

クエリのマージをクリックします。

クエリのマージをクリックします

クエリをマージする画面が表示されます。

クエリをマージする画面が表示されます

テーブル1の「商品」を選択します。

テーブル1の「商品」を選択します

結合先の選択で、テーブル2を選択します。

結合先の選択で、テーブル2を選択します

テーブル2が表示されます。

テーブル2が表示されます

テーブル2の「商品」を選択します。

テーブル2の「商品」を選択します

「結合の種類」で、「完全外部」を選択します。

「結合の種類」で、「完全外部」を選択します

OKをクリックします。

OKをクリックします

Sheet1とSheet2のデータを、完全外部で結合できます。

Sheet1とSheet2のデータを、完全外部で結合できます

Sheet1とSheet2のデータを、完全外部で結合できました。

次は、テーブル2の方のデータを展開していきます。

データを展開

展開ボタンをクリックします。

展開ボタンをクリックします

展開の画面でそのままOKをクリックです。

展開の画面でそのままOKをクリックです

テーブル2のデータを展開できます。

テーブル2のデータを展開できました

テーブル2のデータを展開できました。

見出しが長いので、名前を変更しておきます。

見出し名の変更

商品2と変更しておきます。

商品2と変更しておきます

価格2と変更しておきます。

価格2と変更しておきます

売上2と変更しておきます。

売上2と変更しておきます

名前を変更できます。

名前を変更できました

名前を変更できました。

結合したクエリを、シートに読み込んでいきます。

シートに読み込む

閉じて読み込むをクリックします。

閉じて読み込むをクリックします

結合したクエリをシートに読み込めます。

結合したクエリをシートに読み込めました

結合したクエリをシートに読み込めました。

塗りつぶしの色がわかりやすいように、テーブルの書式をなしにしておきます。

テーブルの書式をなしにする

「テーブルデザイン」から書式なしのデザインを選択します。

「テーブルデザイン」から書式なしのデザインを選択します

書式をなしにできます。

書式をなしにできました

書式をなしにできました。

Sheet1の値を基準にしたいので、商品で昇順に並び替えをします。

昇順に並び替える

商品で昇順に並び替えをします。

Sheet1の値を基準にしたいので、商品で昇順に並び替えをします

昇順をクリックします。

昇順をクリックします

これで、2つのシートを比較できます。

2つのシートを比較できた

2つのシートを比較できました

2つのシートを比較できました。

手順は長いですけど、1度クエリを作成してしまえば、更新ボタンで簡単に更新することができるので、便利です。

VBAで不一致を塗りつぶし

不一致の塗りつぶしは、VBAを使います。

不一致を塗りつぶししたい

不一致の値を塗りつぶしします

不一致の値を塗りつぶしするVBAコードになります。

Sub TEST3()
  
  Dim A
  'テーブルの価格と売上をループ
  For Each A In Range("テーブル1_2").Resize(, 2).Offset(0, 1)
    '不一致の場合
    If A <> A.Offset(0, 3) Then
      '空欄ではない場合
      If A <> "" And A.Offset(0, 3) <> "" Then
        A.Interior.Color = RGB(255, 255, 0) '塗りつぶし
        A.Offset(0, 3).Interior.Color = RGB(255, 255, 0) '塗りつぶし
      End If
    End If
  Next
  
End Sub

では、VBAコードを実行してみます。

不一致の値を塗りつぶしできた

不一致の値を塗りつぶしできました

不一致の値を塗りつぶしできました。

おわりに

この記事では、2つのシートを比較する方法として、Excel VBAを使う方法と、パワークエリを使う方法をご紹介しました。

2つのシートを比較するには、「完全外部」で比較すると便利です。

「完全外部」は、2つのシートのすべてのデータを一覧にして、比較する方法になります。

2つのシートの過不足の判定と、不一致のデータの確認が簡単にできるようになります。

VBAやパワークエリを使って、2つのシートを比較する方法をマスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す