MS Excel中的VBA函数
我是VBA的新手,我有一个问题,即我有一个数学函数1 +2x¹+3x²+4x³+ ... +10x⁹,我需要将它解析为两种方法:MS Excel中的VBA函数
- 我可以使用提升操作(帕斯卡模拟pow)和IF语句;
- 没有站起来的操作和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)
所以可以任何人提出任何建议,或帮助我的问题?
您需要*
作为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
它确实有错误的语法,所以我感兴趣的是它如何给出任何答案,更不用说2441406 :)。它会给你一个语法错误,没有你的修正。 – 2014-11-04 22:29:58
有Cor_Blimey解释他在别的地方做了这个公式,并给出了不正确的答案。所以我认为在这里确实有两个问题:1)为什么代码无法工作,2)如果代码正常工作,则方程是正确的。正确的答案似乎是23803711顺便说一句 – Alex 2014-11-04 22:35:21
@alex,yeap,正确的答案是23803711,但我无法通过VBA解决这个问题( – 2014-11-04 22:38:16
如果您不能使用VBA为此,有一个公式的解决方案。假设你的可变x
是在单元格A1,你会在另一个小区(I使用B1)使用以下公式:
=SUMPRODUCT(ROW($1:$10)*A1^(ROW($1:$10)-1))
当A1 = 5,它返回23803711按预期方式。
如果你想让x的系列增加到0到9的幂,那么答案是正确的。你的描述你想要的东西的小小散文让我感到困惑(用'10x9'来表示你的意思是9倍或10倍的x倍)。另外,原谅我,但我不确定你的意思是“IF状态”。 2 - 没有上涨的操作和IF声明。' – 2014-11-04 22:18:42
如果2441406是错误的答案,那么正确的答案是什么? – DeanOC 2014-11-04 22:19:12
我看到你编辑的问题,但我的问题依然存在。你的函数返回一系列,对于i = 0到9,Sum((i + 1)* x^i)。如果那不是你想要的,那么你可能需要更清楚地定义你想要的代数系列。 – 2014-11-04 22:25:24