У меня есть этот код, который должен возвращать одно из двух текстовых значений в столбце J в зависимости от того, найдены ли два смежных значения в этом листе в другом листе (они ДОЛЖНЫ быть смежными друг с другом в обоих листах).Если смежные значения в одном листе находятся рядом друг с другом, найденном в другом листе, возвращается «Ранее добавлено», если нет, возвращается «Том добавлен».Код выполняется, однако, если SubValueToFind является пустым значением, он может возвращать неправильный текст, то есть может означать возвращение «ранее добавленного», когда он фактически возвращает «Том добавлен».
Любая ячейка, которая классифицируется как «Ранее добавленная», является правильной, даже если в SubValueToFind есть пустая ячейка.Однако, если это значение пустое, а многие из них, оно может ошибочно классифицировать его как «Том, добавленный», когда оно должно быть «Ранее добавлено», как и на другом листе.Опять же, это происходит только тогда, когда в столбце Sub есть пустое значение.
Sub UpdateTomAdd()
Dim LR As Long, i As Long
Dim AcctSearchRange As Range
Dim AcctFindRange As Range, C As Range, Cel As Range, D As Range
Dim AcctValueToFind As Variant
Dim SubValueToFind As Variant
Dim CurrentSheet As Worksheet
Dim xlSheet As Worksheet, Xfound As Boolean
Dim firstAddress As String
Set CurrentSheet = ActiveWorkbook.ActiveSheet
Set xlSheet = ActiveWorkbook.Worksheets("CurrentBSCOA")
Set AcctSearchRange = xlSheet.Range("E1:E" & xlSheet.Range("E" & Rows.Count).End(xlUp).Row)
Set AcctFindRange = CurrentSheet.Range("C1:C" & CurrentSheet.Range("C" & Rows.Count).End(xlUp).Row)
For Each Cel In AcctFindRange.Cells
Xfound = False
AcctValueToFind = Cel.Value
SubValueToFind = Cel.Offset(0, 1).Value
With AcctSearchRange
Set C = .Find(AcctValueToFind)
If Not C Is Nothing Then 'does this mean if the sub value on the new sheet is blank?'
firstAddress = C.Address
Do
If C.Offset(0, 1).Value = SubValueToFind Then
Xfound = True
Exit Do
End If
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With
Cel.Offset(0, 7).Value = IIf(Xfound, "Previously Added", "Added by Tom")
Next Cel
End Sub
Если соседние значения оказываются смежными друг с другом на другом листе, следует указать: «Ранее добавлено».Если смежные значения не найдены смежными друг с другом на другом листе, он должен сказать: «Том добавлен».
Пустые ячейки в столбце Sub вызывают ошибки.