这似乎是一个非常简单的问题,但我只是缺乏回答的知识,在谷歌搜索时无法找到答案。
据我了解,当您在Excel中的单元格中键入公式时,如=SUM(B1:B3)
,您输入的是文本字符串。按 Enter 键可以让Excel知道它是一个公式来评估此文本字符串。
在我的情况下,我不输入文本字符串,它在单元格中生成如下:
A1
包含'=SUM(x:y)
(请注意' ,即作为文字) A2
包含=SUBSTITUTE(SUBSTITUTE(A1,"x","B1"),"y","B3")
A2
,=SUM(B1:B3)
作为文字字符串返回 我想要一个像' EVALUATE()
'在A3
中,与在A3
中键入函数并按 Enter 或↵键具有相同的效果。
A3
包含=EVALUATE(A2)
,与=EVALUATE("=SUM(B1:B3)")
相同
=
个符号) A3
然后返回以文本形式存储的公式的输出,与您直接输入=SUM(B1:B3)
的输出完全相同我意识到在这个阶段习惯于提供示例/尝试代码。不幸的是,我缺乏知识是解决问题的基础,因此我担心我的代码几乎无法提供。无论如何我发布它,或者至少是一个骨架:
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
我希望能继续下去,我们将非常感谢任何建议。
答案 0 :(得分:1)
试试这个UDF,看看它是如何工作的。可能需要小小的调整,但这是你需要的核心。
Public Function eval(ByVal str As String) As Variant
eval = Application.Evaluate(str)
End Function