MS Excel中的VBA函数

问题描述:

我是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

您需要*作为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

如果您不能使用VBA为此,有一个公式的解决方案。假设你的可变x是在单元格A1,你会在另一个小区(I使用B1)使用以下公式:

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

当A1 = 5,它返回23803711按预期方式。