Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA将字符串y=f(x1,x2…)公式转换为双精度?_Vba_Excel - Fatal编程技术网

VBA将字符串y=f(x1,x2…)公式转换为双精度?

VBA将字符串y=f(x1,x2…)公式转换为双精度?,vba,excel,Vba,Excel,首先,我不知道用VBA是否可行,但我已经花了将近四个小时的时间进行研究,但运气不佳。 我正在用Excel VBA做一个项目,制作一个宏,可以计算任何包含多个x变量的y=f(x)函数,用户可以在输入框中输入这些变量 基本上,通过将输入定义为字符串,我可以在工作表的任何单元格中毫无问题地打印出来 Dim f As String f = InputBox(Prompt:="Please input your function" & Chr(13) & Chr(13) & C

首先,我不知道用VBA是否可行,但我已经花了将近四个小时的时间进行研究,但运气不佳。 我正在用Excel VBA做一个项目,制作一个宏,可以计算任何包含多个x变量的y=f(x)函数,用户可以在输入框中输入这些变量

基本上,通过将输入定义为字符串,我可以在工作表的任何单元格中毫无问题地打印出来

Dim f As String
f = InputBox(Prompt:="Please input your function" & Chr(13) & Chr(13) & 
Chr(13) & Chr(13) & "y =")
Cells(1,1) = "y = " + f
现在的问题是,我想使用用户在输入框中输入的y=f(x1,x2…),将变量y定义为x的函数,就像在VBA中通常所做的那样。然而,变量将是一些随机数的n维向量,因此它们必须被定义为这样,例如

Dim x1() As Double, x2() As Double, x3() As Double
Dim y() As Double, n As Long
... Randomize and defining x variables ...

ReDim y(1 To n, 1 To 1)
For i = 1 To n
y(i,1)=x1(i,1) + x2(i,1) + x3(i,1)
Next i
这里,x和n的预期值由用户自己在单独的输入框中确定

现在,我希望程序能够从用户输入的公式中读取并定义y,而不是自己在模块中键入y(i,1)=x1(i,1)+x2(i,1)+x3(i,1),因此如果用户更改y=f(x),程序也会自动更改其y公式,因此,它将能够计算各种公式,而无需用户打开模块并从内部对其进行更改

请告诉我这是否可能或者可能太复杂,我会很感激你们能给我的任何意见。
提前谢谢

而不是y=f(x1,x2),只需将用户确定的字符串公式(如=f(x1,x2))放在一个单元格中,或者直接将其放入
Evaluate()。比如y=Evaluate(用户字符串)。其中y是一个VBA变量,您已经在代码中设置了
Dim
ed。您好,非常感谢您的回答。Evaluate()使我找到了正确的方向,我能够从单元格中的字符串中提取f(x1,x2),并使用Replace()将“x1”和“x2”替换为各自变量的定义值。它最终打印出一个值作为等式的结果!然而,我还没有完全完成,因为我有n维向量,所以说变量是x1(n)和x2(n)。简单地用x(n)替换“x”不起作用,因为公式字符串显然不是向量,但我仍在尝试。