【发布时间】: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 中没有
=符号)
- (可能在 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这个问题就很容易解决了……
标签: vba excel user-defined-functions