Вы можете использовать Application.Evaluate. В моем примере у меня есть следующие данные в электронной таблице:
A1: 5
B1: 2
C1: 3
A3: =A1+SUM(B1:C1)
Затем вы можете запустить этот код для преобразования формулы A3 в =A1+5
. Понятно, что вам нужно все настроить в соответствии с вашей ситуацией и определенно заняться обработкой ошибок, или вы будете изменять формулы без особого контроля!
Sub bob()
Dim tmpFirst As String
Dim tmpSecond As String
tmpFirst = Split(Range("A3").Formula, "+")(0)
tmpSecond = Split(Range("A3").Formula, "+")(1)
Range("A3").Formula = tmpFirst & "+" & Application.Evaluate(tmpSecond)
End Sub
Функция Split разделяется на +
, что весьма вероятно будет проблематичным. Я бы порекомендовал добавить фиктивный диапазон с именем Spacer
или аналогичный, который может указывать на ячейку со значением ноль, может быть? Формула может быть что-то вроде:
=A1+Spacer+SUM(B1:C1)
и тогда разделение можно было бы сделать на +Spacer+
вместо +
, чтобы избежать разделения на знак плюс, который вы не хотите (может легко произойти).