Следующая функция и дополнительный вызов этой функции вставляют вашу формулу в ячейку с указанным диапазоном в качестве аргумента. Вы можете установить это для любой ячейки.
Sub evaluate()
Dim x As Range
Dim blah As String
Set x = Sheets("Sheet1").Range("A2")
blah = Formulaz(x)
Range("A3").Formula = blah
End Sub
Public Function Formulaz(x As Range)
Formulaz = "=43.025 *" & x.Address & "^-0.452"
End Function
Чтобы изменить это, чтобы взять строку вместо этого, вы можете просто изменить следующим образом:
Dim x As String
Dim blah As String
x = Range("A2").Value
blah = Formulaz(x)
Range("A3").Formula = blah
End Sub
Public Function Formulaz(x As String)
Formulaz = "=43.025 *" & x & "^-0.452"
End Function
Это дает тот же результат (формулавставляется в ячейку, и показывается решение), но оно принимает значение ячейки в качестве аргумента.
Как указано в OP, это не то, что нужно, возможно, это работает лучше:
Sub evaluate()
Dim x As String
Dim blah As String
x = "5"
blah = Formulaz(x)
Debug.print blah
End Sub
Public Function Formulaz(x As String)
Formulaz = 43.025 * x ^ -0.452
End Function
Возвращает значение выражения с x, переданным в качестве аргумента. Выход для x = 5 будет 20,78674, сохраненным в Blah как строка.