2つのシートにあるデータを比較し、別のシートに書き出す処理です。
参考:配列の基本
目次
用意するシート
条件
- データ数は同じ(行)
シート
- data1:比較対象データ
- data2:比較対象データ
- 結果:比較結果を書き出すシート
不一致個所はセルに「不一致」と設定します。E列に行方向の不一致数を設定します。
サンプルコード
Sub sample1() Dim ws1 As Worksheet: Set ws1 = Worksheets("data1") Dim ws2 As Worksheet: Set ws2 = Worksheets("data2") Dim wsK As Worksheet: Set wsK = Worksheets("結果") Dim Arry1 As Variant: Arry1 = ws1.Range("A1").CurrentRegion Dim Arry2 As Variant: Arry2 = ws2.Range("A1").CurrentRegion wsK.Range("A1").CurrentRegion.Offset(1, 0).ClearContents Dim r As Long, c As Long, fCnt As Long For r = 2 To UBound(Arry1) For c = LBound(Arry1, 2) To UBound(Arry1, 2) If Arry1(r, c) = Arry2(r, c) Then wsK.Cells(r, c) = Arry1(r, c) Else wsK.Cells(r, c) = "不一致" fCnt = wsK.Cells(r, 5) wsK.Cells(r, 5) = fCnt + 1 End If Next c Next r End Sub
10~21行目のFor ~Nextのネスト処理は、変数で混乱しないように次のように設定しました。
- r:行
- c:列