用于评估表示公式的文本字符串的 UDF
Posted
技术标签:
【中文标题】用于评估表示公式的文本字符串的 UDF【英文标题】:UDF to evaluate a text string which represents a formula 【发布时间】:2017-02-01 10:27:36 【问题描述】:这似乎是一个非常简单的问题,但我只是缺乏回答的知识,并且在谷歌搜索时找不到答案。
据我了解,当您在 Excel 的单元格中键入公式时,例如 =SUM(B1:B3)
,您输入的是文本字符串。按 Enter 键通过让 Excel 知道它是一个公式来计算此文本字符串。
在我的情况下,我没有输入文本字符串,它是在一个单元格中生成的,如下所示:
A1
包含'=SUM(x:y)
(注意',即作为文本)
A2
包含 =SUBSTITUTE(SUBSTITUTE(A1,"x","B1"),"y","B3")
返回 A2
, =SUM(B1:B3)
作为文本字符串
我想要一个像 A3
中的 'EVALUATE()
' 这样的 UDF,它与在 A3
中键入函数并按 Enter 或 ↵ 的效果相同键。
A3
包含 =EVALUATE(A2)
与 =EVALUATE("=SUM(B1:B3)")
相同
(可能在 SUM 中没有 =
符号)
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
我希望这足以继续,任何建议将不胜感激。
【问题讨论】:
您知道内置的 Evaluate 功能吗?这应该包含在您的思考中...Application.Evaluate(inputFormula)
,我想,一旦您删除“=”,那么大多数事情都可能得到解决。
您甚至不需要删除 '= 符号。
甚至不知道罗里 :-)。哎呀,只要用Evaluate这个问题就很容易解决了……
【参考方案1】:
试试这个 UDF,看看它是如何工作的。可能需要稍作调整,但这是您需要的核心。
Public Function eval(ByVal str As String) As Variant
eval = Application.Evaluate(str)
End Function
【讨论】:
我知道这不适用于某些功能,例如EVAL("HYPERLINK(""https://www.google.com"")")
不会给您链接,但至少它不会引发错误!我可以看到对于 VBA 拥有自己版本的那些函数需要进行一些调整,但感谢您的起点!以上是关于用于评估表示公式的文本字符串的 UDF的主要内容,如果未能解决你的问题,请参考以下文章