Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于VBA的求和算法_Excel_Vba - Fatal编程技术网

Excel 基于VBA的求和算法

Excel 基于VBA的求和算法,excel,vba,Excel,Vba,在VBA上尝试将2^i从i=0求和到i=n。其中n是用户每次输入的值 我可以让它单独做每一项,但不是求和 Sub Button1() Dim n As Single n = InputBox("Enter a value for n") Dim array as Dim CSeriesSum As Double ActiveCell.Value = WorksheetFunction.SeriesSum(Arg1:=2, Arg2:=n, Arg3:=1, Arg4:=1:n) End

在VBA上尝试将2^i从i=0求和到i=n。其中n是用户每次输入的值

我可以让它单独做每一项,但不是求和

Sub Button1()
Dim n As Single

n = InputBox("Enter a value for n")

Dim array as

Dim CSeriesSum As Double

ActiveCell.Value = WorksheetFunction.SeriesSum(Arg1:=2, Arg2:=n, Arg3:=1, Arg4:=1:n)

End Sub
我希望它会返回,例如,如果n=0,则返回1;如果n=1,则返回3;如果n=2,则返回7等等。

也许可以尝试以下循环:


除了基于循环的方法外,还可以使用以下事实:

1 + 2 + 2^2 + ... + 2^n + ...
其部分和可以用封闭形式表示。在这种情况下,您计算的部分和等于2^n+1-1。例如,如果n=3,则很容易验证

1 + 2 + 4 + 8 = 15 = 16-1 = 2^4 - 1
这将导致以下代码:

Sub Button1()
    Dim n As Long
    n = InputBox("Enter a value for n")
    ActiveCell.Value = 2 ^ (n + 1) - 1
End Sub

为什么不直接返回2^n+1-1呢?在这种情况下,如果输入n=2,它将返回2^2=4。我希望它返回2^0+2^1+2^2我说的是返回2^n+1-1,而不仅仅是2^n+1。这是一个标准公式,它对应的是一个二进制数,它都是1,小于2的幂。例如,基数2中的1111在基数10中为16-1=15。
Sub Button1()
    Dim n As Long
    n = InputBox("Enter a value for n")
    ActiveCell.Value = 2 ^ (n + 1) - 1
End Sub