使用math公式input值在VBA Exccel中进行math计算

我在Excel VBA中进行数值积分,我想从用户那里得到公式,而不是将它插入到单元格中。

用户给我x ^ 3 + x ^ 2 + 2这就是F(X)

在A1中,我有数字2,我在B1中评估F(X)。

如何告诉excel从用户input的方程是= A1 ^ 3 + A2 ^ 2 + 2。 我只需要转换到一个单元格。

我正在使用Val(InputBox())

谢谢您的帮助

应用程序评估函数可以parsing从用户接收到的公式,但您必须find将x转换为可以正确理解的单元格引用。 这可能需要工作表名称。

您的x ^ 3 + x ^ 2 + 2示例用A1和A2replace两个x值。 这可能比x ^ 3 + y ^ 2 + 2更好,这样在A1和A2之间就不存在歧义。

 Sub f_of_x_and_y() Dim fmla As String, str As String fmla = InputBox("enter formula") With Worksheets("Sheet2") str = Replace(Replace(fmla, "x", .Range("A1").Address(external:=True)), _ "y", .Range("A2").Address(external:=True)) .Range("A3") = Application.Evaluate(str) End With End Sub 

如果用户inputx或X,并且只需要用A1.cell.valuereplaceX,则使用以下命令:

 Sub test() formula_user = InputBox("Please type formula") Range("B1").Formula = "=" & Replace(LCase(formula_user), "x", "A1") End Sub 

用户input框中的x用公式中的A1代替。 在用户input中可以是大写或小写

 Sub variable_input() Dim userFormula$ Dim myVar& myVar = 2 userFormula = InputBox("What is the formula?") Debug.Print userFormula userFormula = Replace(userFormula, "x", myVar) Debug.Print userFormula Dim theAnswer$ theAnswer = Val(userFormula) Debug.Print theAnswer End Sub 

您可以用string“A1”replace所有的“x”。 别忘了在前面添加“=”…

 Sub TestUserEquation() Dim strUserEquation As String strUserEquation = LCase(InputBox("Please enter your equation:", "Equation InputBox")) If strUserEquation <> "" Then Cells(1, 2) = "=" & Replace(strUserEquation, "x", "A1") Else Cells(1, 2) = "No equation entered." End If End Sub