2つの配列を比較



Option Explicit

Dim Arr1
Dim Arr2

Sub 配列比較()
  Dim ws As Worksheet: Set ws = Sheets(1)
  Dim r1 As String, r2 As String
  r1 = "A2"
  r2 = "E2"
  '取得
    Arr1 = GetArr(ws, r1)
    Arr2 = GetArr(ws, r2)

  '比較
    Dim ub1, ub2
    ub1 = UBound(Arr1)
    ub1 = UBound(Arr2)


  '同じ名前を探す
  Dim i, j, k
  For i = 1 To ub1
    For j = 1 To ub1
      If Arr2(i, 1) = Arr(j, 1) Then
        For k = 2 To 3
          If Arr2(i, k) <> Arr1(j, k) Then
            Debug.Print i, j, Arr2(j, k)
          End If
        Next
      End If
    Next
  Next

  For i = 1 To ub1
    For j = 1 To 3
      If Arr2(i, j) <> Arr1(i, j) Then
        Debug.Print i, j, Arr2(i, j)
      End If
    Next
  Next

End Sub

Function GetArr(ws As Worksheet, address As String)
  Dim buf
  Set buf = ws.Range(address).CurrentRegion
  GetArr = buf
End Function




Option Explicit

Dim Arr1
Dim Arr2

Sub 配列比較()
  Dim ws As Worksheet: Set ws = Sheets(1)
  Dim r1 As String, r2 As String
  r1 = "A2"
  r2 = "E2"
  '取得
    Arr1 = GetArr(ws, r1)
    Arr2 = GetArr(ws, r2)

  '比較
    Dim ub
    ub = UBound(Arr1)

  Dim i, j
  For i = 1 To ub
    For j = 1 To 3
      If Arr2(i, j) <> Arr1(i, j) Then
        Debug.Print i, j, Arr2(i, j)
      End If
    Next
  Next

End Sub

Function GetArr(ws As Worksheet, address As String)
  Dim buf
  Set buf = ws.Range(address).CurrentRegion
  GetArr = buf
End Function