Есть несколько вещей не так с этим.Когда вы выполняете итерацию по cel in SrchRng
, ваше условие проверяет значение этого cel на наличие «REASON».Это не то, что вы хотите.По сути, вы проверяете строку «REASON» и говорите, что все записи ниже этого, до следующей причины, должны быть истинными для условного заполнения столбца J.
Позволяет, действительно вкратце, рассмотрим логику отдельной ячейки, чтобы проиллюстрировать, почему ваш код не выполняет то, что вам нужно: в ячейке G3 вы проверяете, содержит ли она строку «REASON».Это не так, поэтому нигде не присваивается никакого значения.Следующее будет делать то, что вы хотите:
Sub AddSus()
Dim SrchRng As Range, cel As Range, reasonString As String
Set SrchRng = Range("g1:g60")
For Each cel In SrchRng
If InStr(1, cel.Value, "REASON") > 0 Then
reasonString = cel.Value
ElseIf cel.Value <> "" Then
cel.Offset(0, 3).Value = reasonString
End If
Next cel
End Sub
Незначительное примечание, но если вы находитесь в столбце G и хотите заполнить столбец J, смещение должно быть .offSet(0,3)
.