UDF来评估表示公式的文本string

这似乎是一个非常简单的问题,但我只是缺乏知识来回答,并且在Google上search时找不到答案。

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

在我的情况下,我不input文本string,它是在一个单元格中生成,如下所示:

  • A1包含'=SUM(x:y) (注意' ,即作为文本)
  • A2包含=SUBSTITUTE(SUBSTITUTE(A1,"x","B1"),"y","B3")
    • A2返回=SUM(B1:B3) 作为文本string

我想要一个像A3EVALUATE() ”那样的UDF,它与在A3键入函数并按Enter或键相同。

  • A3包含=EVALUATE(A2) ,它与=EVALUATE("=SUM(B1:B3)")
    • (在SUM内可能不是=符号)
  • A3然后返回以文本forms存储的公式的输出,就像直接input=SUM(B1:B3)一样

我意识到在这个阶段习惯性地给出示例/尝试的代码。 不幸的是我缺乏知识是解决问题的根本,所以我担心我的代码几乎没有什么可提供的。 无论如何,我发布它,或至less一个骨架:

 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