При выполнении кода я получил следующую ошибку: «Ожидайте завершения с». Это может быть здорово, если помощь будет оказана.
Я создал код ниже, который сравнивает две таблицы. Первоначально сравнивается диапазон значений от sheet1 («Status») до sheet2 («Interface»). Всякий раз, когда диапазон совпадает с диапазонами, представленными на другом листе, он ничего не делает. Когда диапазон не совпадает ни на одном другом листе, вся запись копируется с листа2 на лист1. У меня есть около 1500 строк данных на обоих листах с 15 столбцами.
Function UpdateNEW2() As Long
Const Delimiter As String = "|"
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
Dim newRows As Range
Dim vSteps, key
With Sheets("Steps")
vSteps = .Range("A2:C2", .Cells(.Rows.Count, 1).End(xlUp)).Value
End With
Dim r As Long, c As Long, n As Long
For r = 1 To UBound(vSteps)
key = vSteps(r, 2) & Delimiter & vSteps(r, 2)
If Not dic.Exists(key) Then dic.Add key, 0
Next
Dim vInterface, results
With Sheets("Interface")
vInterface = .Range("A2:O2", .Cells(.Rows.Count, "C").End(xlUp)).Value
End With
ReDim results(1 To UBound(vInterface), 1 To 15)
For r = 1 To UBound(vInterface)
key = vInterface(r, 5) & Delimiter & vInterface(r, 5)
If Not dic.Exists(key) Then
n = n + 1
For c = 3 To 15
results(n, c - 2) = vInterface(r, c)
Next
End If
Next
With Sheets("Steps")
With .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
.Resize(n, 15).Value = results
End With
UpdateNEW2 = n
End Function