Excel 基于VBA的求和算法
在VBA上尝试将2^i从i=0求和到i=n。其中n是用户每次输入的值 我可以让它单独做每一项,但不是求和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
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