Вам нужно будет проверить наличие ошибки перед существующей, если:
Sub m()
With ActiveSheet 'Better to use actual sheet: WorkSheets("Sheet1")
'load with all `0`
.range("B2:B10").Value = 0
For i = 2 To 10
If Not IsError(.Cells(i, 1)) Then
If .Cells(i, 1).Value = "SUP ID" Then
.Cells(i, 2).Value = 1
End If
End If
Next i
End with
End Sub
Только с 9 ячейками для проверки вышеописанное будет работать быстро, но с увеличением диапазона количество раз, котороеvba обращается к листу, чтобы замедлить его.
Вы можете использовать массивы для ускорения.
Sub m()
With ActiveSheet 'Better to use actual sheet: WorkSheets("Sheet1")
Dim inputArr() As Variant
inputArr = .Range("A2:A10").Value
'Default of Integer is `0`
Dim outputArr() As Integer
ReDim outputArr(1 To UBound(inputArr, 1), 1 To 1) As Integer
For i = LBound(inputArr, 1) To UBound(inputArr, 1)
If Not IsError(inputArr(i, 1)) Then
If inputArr(i, 1) = "SUP ID" Then
outputArr(i, 1) = 1
End If
End If
Next i
.Range("B2").Resize(UBound(inputArr, 1)).Value = outputArr
End With
End Sub