2016-02-28 176 views
2

我在Excel VBA中進行數值積分,我想從用戶那裏獲得公式,而不是將它插入到單元格中。使用數學公式輸入值在VBA中進行數學計算Exccel

用戶給我的x^3 + X^2 + 2是F(X)

在A1,我有號碼2和I在B1評價F(X)。

如何告訴excel從用戶輸入的公式是= A1^3 + A2^2 + 2。我只需要轉換到一個單元格。

我使用瓦爾(的InputBox())

感謝您的幫助

+0

到目前爲止你有什麼代碼?請發佈它,以便a)如果您已經有代碼,我們不會重新發明輪子,b)向我們展示您嘗試過的內容,以及c)可以找到任何潛在的錯誤。我不明白這應該如何,因爲你在VBA中,只需將變量插入用戶提供的公式中,不是嗎? – BruceWayne

+3

你爲什麼不去做每個數學老師在學校告訴我們的東西,用'A1'中的數字代替'x'。像'Replace(「x^3 + x^2 + 2」,「x」,Range(「A1」)。Value)'。 – Ralph

+2

在星期天的早晨,VBA中的數學方程沒有什麼問題,讓人們都興奮起來! – BruceWayne

回答

1

Application Evaluate功能可以解析公式從用戶接收,但你必須找到某種方式來X轉換爲可以正確理解的單元格引用。這可能需要工作表名稱。

您的x^3 + x^2 + 2示例用A1和A2代替兩個x值。這可能會更好,因爲在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 
+0

如果用戶寫入exp(x)+ 2 * x – Maxwell

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替換。在用戶輸入中可以是大寫或小寫

+0

會發生什麼,非常感謝!這有助於完成我的定量方法項目jeje。用戶手冊的時間ajjaja – Maxwell

+0

如果用戶寫入exp(x)+ 2 * x,則會導致eA1p(A1)+ 2 * A1。 – Maxwell

+0

我找到了,我要告訴用戶/老師,如果使用指數公式,請將公式寫爲EXP(x)+ 2 * x。在這種情況下,我刪除了LCase,因此代碼區分了X和x – Maxwell

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 
+1

謝謝!其實這一個將幫助用戶看到他寫的公式 – Maxwell

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 
+1

感謝Porcupine911 – Maxwell