Excel

配列を使って2つのシートを比較し別のシートに不一致を書き出す

2021-07-02

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:列

-Excel
-

© 2021 オフィスのQ&A