UDF 用于评估代表公式的文本字符串
UDF to evaluate a text string which represents a formula
这似乎是一个很简单的问题,但我只是缺乏知识来回答,谷歌搜索也找不到答案。
据我了解,当您在 Excel 的单元格中键入公式时,例如 =SUM(B1:B3)
,您输入的是文本字符串。按 Enter 键通过让 Excel 知道它是一个公式来计算这个文本字符串。
在我的例子中,我没有输入文本字符串,它是在单元格中生成的,如下所示:
A1
包含 '=SUM(x:y)
(注意 ',即文本)
A2
包含 =SUBSTITUTE(SUBSTITUTE(A1,"x","B1"),"y","B3")
- returns在
A2
,=SUM(B1:B3)
作为文本字符串
我想要像 A3
中的“EVALUATE()
”这样的 UDF,它与在 A3
中键入函数并按 Enter[=57 具有相同的效果=] 或 ↵ 键。
A3
包含 =EVALUATE(A2)
与 =EVALUATE("=SUM(B1:B3)")
相同
- (SUM内可能没有
=
符号)
A3
然后 returns 存储为文本的公式的输出,与直接在其中输入 =SUM(B1:B3)
完全相同
我意识到在这个阶段给出示例/尝试的代码是习惯的。不幸的是,我在解决问题的基础领域缺乏知识,所以我担心我的代码没有什么可提供的。反正我是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
这似乎是一个很简单的问题,但我只是缺乏知识来回答,谷歌搜索也找不到答案。
据我了解,当您在 Excel 的单元格中键入公式时,例如 =SUM(B1:B3)
,您输入的是文本字符串。按 Enter 键通过让 Excel 知道它是一个公式来计算这个文本字符串。
在我的例子中,我没有输入文本字符串,它是在单元格中生成的,如下所示:
A1
包含'=SUM(x:y)
(注意 ',即文本)A2
包含=SUBSTITUTE(SUBSTITUTE(A1,"x","B1"),"y","B3")
- returns在
A2
,=SUM(B1:B3)
作为文本字符串
- returns在
我想要像 A3
中的“EVALUATE()
”这样的 UDF,它与在 A3
中键入函数并按 Enter[=57 具有相同的效果=] 或 ↵ 键。
A3
包含=EVALUATE(A2)
与=EVALUATE("=SUM(B1:B3)")
相同- (SUM内可能没有
=
符号)
- (SUM内可能没有
A3
然后 returns 存储为文本的公式的输出,与直接在其中输入=SUM(B1:B3)
完全相同
我意识到在这个阶段给出示例/尝试的代码是习惯的。不幸的是,我在解决问题的基础领域缺乏知识,所以我担心我的代码没有什么可提供的。反正我是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