底层是我正在编写的更大代码的一部分。我在这个示例函数中简化了问题。 'Formuletekst'可以改变,即“*”或“/”或其他东西。如何编写函数以获得测试的计算值(10)而不是它在此给出的输出“500/50”示例功能?非常感谢!
阿米尔
'IN this case Formuletekst = "/"
Function TT(FormuleTekst)
teg = Formuletekst
TT = 500 & teg & 50
End Function
答案 0 :(得分:3)
我建议使用Application.Evaluate
方法,以确保捕获可能是表达式的每个字符串:
tt = "500/50"
aa = Application.Evaluate(tt)
aa将等于10,这将发生在您可能传递给函数的每种Excel操作中。
evaluate方法是管理这种“字符串”输入但同时又是“人类可读操作”的输入的最佳方法。
其他示例向您展示一个更复杂的输入,该输入不会被您提出的其他替代方案管理:
tt = "500/50 + 10/20 - 4"
aa = Application.Evaluate(tt)
此输入将返回aa = 6.5
,但我相信解析字符串并执行操作的时间要长得多(如果内置存在,则无论如何都不安全)。
所以,我的建议只是写
TT = Application.Evaluate("500" & teg & "50")
答案 1 :(得分:1)
您可以设置IF条件:
Function TT(FormuleTekst)
teg = Formuletekst
IF teg = "/" Then
TT = 500/50
Else
TT = 500*5
End Function
对于MS-Excel,您可以使用空单元格(例如A15)来放置公式并将其返回给TT。像这样:
Function TT(FormuleTekst)
teg = FormuleTekst
TT = "=" & 500 & teg & 50
ActiveSheet.Range("A15").Value = TT
TT = ActiveSheet.Range("A15").Value
End Function