使用数学公式输入值在VBA Exccel中进行数学计算

时间:2016-02-28 16:02:42

标签: excel vba excel-vba math integral

我在Excel VBA中进行数值积分,我想从用户那里得到方程,而不是将其插入到Cell中。

实施例

用户给我x ^ 3 + x ^ 2 + 2,即F(X)

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

如何告诉excel用户输入的等式是= A1 ^ 3 + A2 ^ 2 + 2。我只需要转换到一个单元格。

我正在使用Val(InputBox())

感谢您的帮助

4 个答案:

答案 0 :(得分:1)

Application Evaluate函数可以解析从用户收到的公式,但您必须找到将 x 转换为可以正确理解的单元格引用。这可能需要工作表名称。

您的 x ^ 3 + x ^ 2 + 2 示例用A1和A2替换了两个 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

答案 1 :(得分:1)

如果用户输入x或X,您只需要用A1.cell.value替换X,那么请使用:

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

x在用户输入框的公式中替换为A1。它可以是用户输入中的大写或小写

答案 2 :(得分:1)

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

答案 3 :(得分:1)

您可以用字符串“A1”替换所有“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