- ベストアンサー
エクセル・アクセスで不一致行の比較方法
- エクセルやアクセスを使用して、2つのファイルの値の比較を行い、不一致行を抽出する方法について教えてください。特に、5列目までが一致しているが、6-8列目が異なるケースを抜き出す方法についてお聞きしたいです。
- エクセルやアクセスを使って2つのファイルの値を比較し、一致しない行を抽出する方法を教えてください。具体的には、5列目までが一致しているが、6-8列目が異なる場合を抜き出す方法についてお教えください。
- エクセルやアクセスを使用して、2つのファイルを比較し、一致しない行を抽出する方法について教えてください。特に、5列目までが一致しているが、6-8列目が異なる場合を抜き出す方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Aファイルを開いておいて(ttt1.xlsとする)、そのVBEの標準モジュールに下記を貼りつける。比較対象はファイルB(ttt2.xls)とし、閉じておくこと。両ファイルともSheet1にデータがあるとする。 Sub test01() k = 1 Workbooks.Open "c:\my documents\ttt2.xls" Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Workbooks("ttt1.xls").Worksheets("sheet1") Set sh2 = Workbooks("ttt2.xls").Worksheets("sheet1") d = sh1.Range("a1").CurrentRegion.Rows.Count ' MsgBox d For i = 1 To d GoSub hikaku If eq = "y" Then Else Cells(k, 10) = i '不一致行番号 For j = 1 To 8 sh1.Cells(k, j + 10) = sh2.Cells(i, j) Next j k = k + 1 End If Next i Exit Sub '----- hikaku: If (sh1.Cells(i, 1) = sh2.Cells(i, 1)) And _ (sh1.Cells(i, 2) = sh2.Cells(i, 2)) And _ (sh1.Cells(i, 3) = sh2.Cells(i, 3)) Then eq = "y" Else eq = "n" End If Return End Sub (テストデータ)Aファイル a 12 1 b 23 2 c 45 3 d 34 4 e 45 5 f 23 6 g 44 7 h 21 8 Bファイル a 12 1 b 23 2 c 45 3 d 34 4 e 45 33 f 23 6 g 44 7 h 21 8 (結果) j1から 5 e 45 33 実際例では、ファイル名、シート名、列の番号(Cells()の ()の中)など適当に変える必要ありますが。 また本例では、簡略化して、A、B、Cの3列しか比較してません。
お礼
ありがとうございます。質問後、試行錯誤して複数項目をカチネーションして、1項目にしアクセスの不一致クエリを使用して解決いたしました。 マクロを組むといいとは思ってはいたのですが経験がないので、いつも尻ごみをしてしまいます。例文をみてもピンとこないのですが、このようにあるものをこうやって実現するんだという形にしていただけるとすごく勉強になります。この方法でも試してみようと思います。最近、ファイルの値の比較の作業が非常に多く短時間で大量データを扱うことが多いためまた質問をするかもしれません。今回はありがとうございました。