Во-первых, он возвращает FALSE, потому что вы сравниваете формулу ячейки со своей строкой. Они не равны, следовательно, он возвращает FALSE. Это можно решить, пропустив часть =Cells(i,3).Formula
.
Во-вторых, важно знать, что некоторые функции VBA не могут использоваться в вашей рабочей таблице и наоборот. Когда вы введете «= Cells» в ячейку, вы заметите, что нет функции Worksheet под названием Cells. Вот почему следующее вернет '#Field!'
For i = 1 To 10 Step 1
If Cells(i, 2).Value > Cells(i, 1).Value Then
Cells(i, 3).Formula = "=cells(i,1).value+cells(i,2).value"
End if
If Cells(i, 2).Value < Cells(i, 1).Value Then
Cells(i, 3).Formula = "=cells(i,2).value-cells(i,1).value"
End if
Next i
Самое простое, что можно сделать - выполнить вычисления в VBA:
For i = 1 To 10 Step 1
If Cells(i, 2).Value > Cells(i, 1).Value Then
Cells(i, 3).Value = Cells(i, 1).Value + Cells(i, 2).Value
End if
If Cells(i, 2).Value < Cells(i, 1).Value Then
Cells(i, 3).Formula = Cells(i, 2).Value - Cells(i, 1).Value
End if
Next i
Некоторые рекомендации:
- Вместо того, чтобы обращаться к значению ячейки несколько раз, присвойте значение переменной.
- Старайтесь избегать записи формул на листах. Это сильно замедлит ваш код. Если необходимо, то сначала подумайте о сохранении всех формул в массиве и записывайте их на лист только после того, как весь массив будет заполнен.
- В этом случае вы можете полностью отказаться от использования VBA.
- Перед выполнением расчетов можно проверить, является ли значение ячейки цифрой c.
- Если вы настаиваете на использовании функции рабочего листа, вы можете воспользоваться предложением Storax.