Я пытаюсь проверить два набора информации на двух разных вкладках, а затем перенести все записи на третью вкладку, выделяя несоответствия в информации, а также записи, которые присутствуют в наборе, но не во втором. Как дополнительная трудность, информация, которую мне нужно проверить, записана не одинаково на обеих вкладках. Например: на одной из вкладок продукты называются «Продукт 1, Продукт 2» и т. Д., Тогда как на другой используются только цифры.
Я довольно новичок в VBA, и моя лучшая идея на данный момент - выбрать столбец с идентификаторами в одном из наборов и использовать Find, чтобы проверить другой набор на совпадения. После этого я хотел бы использовать Offset для значения Find, чтобы проверить другие ячейки в строке.
Однако я сталкиваюсь с ошибкой 'Object variable или With block variable not set', и я не знаю, что я делаю неправильно.
Ниже приведен код, и я очень признателен за любую помощь в использовании смещения в этом сценарии (или за идеи по более эффективному способу получения результатов).
Sub Test()
Dim Candi_ID As String
Dim Full_Name As String
Dim i_Row As Object
Dim i_Cell As Range
Dim MD_Range As Integer
Dim i_Cell As Range
Sheets("M Report").Select
MD_Range = Application.WorksheetFunction.CountA(Range("C:C")) 'column with the IDs
For R = 2 To MD_Range
Candi_ID = Sheets("M Report").Cells(R, 3)
Full_Name = Sheets("M Report").Cells(R, 1)
If Candi_ID <> "" Then
With Sheets("i Report").Range("B:B")
Set i_Cell = .Find(What:="*" & Candi_ID, LookIn:=xlValues)
If i_Cell Is Nothing Then
Sheets("Tracker").Range("A" & Last_Row + 1) = Candi_ID
Sheets("Tracker").Range("A" & Last_Row + 1).Interior.Color = RGB(255, 0, 0)
Else
Last_Row = Sheets("Tracker").Cells(.Rows.Count, "A").End(xlUp).Row
Sheets("Tracker").Range("A" & Last_Row + 1) = Candi_ID
End If
If Full_Name <> "" Then
If Full_Name = i_Cell.Offset(0, -1) Then 'full name is one cell to the left of the ID cell
Sheets("Tracker").Range("C" & Last_Row + 1) = Full_Name
Else
Sheets("Tracker").Range("C" & Last_Row + 1) = Full_Name
Sheets("Tracker").Range("C" & Last_Row + 1).Interior.Color = RGB(255, 0, 0)
End If
End If
End With
End If
Last_Row = Last_Row + 1
Next R
End Sub