2014-11-04 68 views
0

我是VBA的新手,我有一個問題,即我有一個數學函數1 +2x¹+3x²+4x³+ ... +10x⁹,我需要將它解析爲兩種方法:MS Excel中的VBA函數

  1. 我可以使用提升操作(帕斯卡模擬pow)和IF語句;
  2. 沒有站起來的操作和IF語句...

我已經試過這一個:

Public Function test(x) 


test = 1 + 2*x^1 + 3*x^2 + 4*x^3 + 5*x^4 + 6*x^5 + 7*x^6 + 8*x^7 + 9*x^8 + 10*x^9 


End Function 

,但我認爲它會返回錯誤的答案 - 2441406與調用=test(5)

所以可以任何人提出任何建議,或幫助我的問題?

+1

如果你想讓x的系列增加到0到9的冪,那麼答案是正確的。你的描述你想要的東西的小小散文讓我感到困惑(用'10x9'來表示你的意思是9倍或10倍的x倍)。另外,原諒我,但我不確定你的意思是「IF狀態」。 2 - 沒有上漲的操作和IF聲明。' – 2014-11-04 22:18:42

+2

如果2441406是錯誤的答案,那麼正確的答案是什麼? – DeanOC 2014-11-04 22:19:12

+0

我看到你編輯的問題,但我的問題依然存在。你的函數返回一系列,對於i = 0到9,Sum((i + 1)* x^i)。如果那不是你想要的,那麼你可能需要更清楚地定義你想要的代數系列。 – 2014-11-04 22:25:24

回答

3

您需要*作爲multiper:

Public Function test(x) 
    test = _ 
     1 _ 
     + 2 * (x^1) _ 
     + 3 * (x^2) _ 
     + 4 * (x^3) _ 
     + 5 * (x^4) _ 
     + 6 * (x^5) _ 
     + 7 * (x^6) _ 
     + 8 * (x^7) _ 
     + 9 * (x^8) _ 
     + 10 * (x^9) 
End Function 
+0

它確實有錯誤的語法,所以我感興趣的是它如何給出任何答案,更不用說2441406 :)。它會給你一個語法錯誤,沒有你的修正。 – 2014-11-04 22:29:58

+0

有Cor_Blimey解釋他在別的地方做了這個公式,並給出了不正確的答案。所以我認爲在這裏確實有兩個問題:1)爲什麼代碼無法工作,2)如果代碼正常工作,則方程是正確的。正確的答案似乎是23803711順便說一句 – Alex 2014-11-04 22:35:21

+0

@alex,yeap,正確的答案是23803711,但我無法通過VBA解決這個問題( – 2014-11-04 22:38:16

4

如果您不能使用VBA爲此,有一個公式的解決方案。假設你的可變x是在單元格A1,你會在另一個小區(I使用B1)使用以下公式:

=SUMPRODUCT(ROW($1:$10)*A1^(ROW($1:$10)-1)) 

當A1 = 5,它返回23803711按預期方式。