Как говорит @SJR, вы частично работаете за пределами своего l oop и частично внутри своего l oop, постоянно сравнивая с одной и той же переменной.
Могу ли я предложить альтернативу для работы через память вместо (и избегайте более медленных обращений к вашему рабочему листу слишком часто):
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim lr As Long, x As Long
Dim arr As Variant
With ws
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
arr = .Range("A2:C" & lr).Value
For x = LBound(arr) To UBound(arr)
If arr(x, 1) < 50 Then
arr(x, 2) = arr(x, 1)
Else
arr(x, 3) = arr(x, 1)
End If
Next
.Range("A2:C" & lr).Value = arr
End With
End Sub
Как вы можете заметить, нам не нужно добавлять 50 к каждому значению для сравнения, если его <=
к 100. Это будет подразумевается, что начальное значение должно быть просто ниже 50.
При этом, то же самое достигается быстро с помощью собственных функций Excel, если вы хотите избежать VBA.