UDF 用于评估代表公式的文本字符串

UDF to evaluate a text string which represents a formula

这似乎是一个很简单的问题,但我只是缺乏知识来回答,谷歌搜索也找不到答案。

据我了解,当您在 Excel 的单元格中键入公式时,例如 =SUM(B1:B3),您输入的是文本字符串。按 Enter 键通过让 Excel 知道它是一个公式来计算这个文本字符串。

在我的例子中,我没有输入文本字符串,它是在单元格中生成的,如下所示:

我想要像 A3 中的“EVALUATE()”这样的 UDF,它与在 A3 中键入函数并按 Enter[=57 具有相同的效果=] 或 键。


我意识到在这个阶段给出示例/尝试的代码是习惯的。不幸的是,我在解决问题的基础领域缺乏知识,所以我担心我的代码没有什么可提供的。反正我是post它,至少是骨架:

Sub EVALUATE_Test() 'a temporary macro to run the EVALUATE function with an input text of "B1^2"
Debug.Print EVALUATE("B1^2")
End Sub

Function EVALUATE(InputFormula As String) 'defining the UDF and Input - I'm not sure how to dimension evaluate though, as it could output text or a number

'here is where the code goes to evaluate the InputFormula

EVALUATE = InputFormula & "hi" 'Obviously the real UDF won't need '& "hi" but I put it in to test the debugging!
End Function

我希望这足以继续下去,任何建议将不胜感激。

试试这个 UDF,看看它是如何工作的。可能需要进行一些小的调整,但这是您需要的核心内容。

Public Function eval(ByVal str As String) As Variant
  eval = Application.Evaluate(str)
End Function