所以我想做的是取两个值(x)和(y)之间的差值,得到(n)。然后我想通过公式(n)来运行(x),每次递增(x)。然后我想把所有这些结果的总和输出到一个单元格中。我不知道如何在一个单元格中整齐地输出结果,所以我用了一次VBA。
这是我目前的成果。
Sub Math()
'
'Math
'
Dim i As Integer
i = 0
Do While i < ((E42) - (d42))
cell(h42).Value = ((((d42) + i) ^ 2) * 100) / 3
End Sub
我被卡住的是如何得到每个循环的结果 并把它们加在一起。我希望有一个i值,范围在1-100之间。我唯一能想到的方法是,我将有大量的单元格在一列预留,将计算每一个单独的迭代,然后把所有这些加在一起。
另外,如果有办法写一个函数,可以计算((x+n)^2)*1003的sum(n),那就更好了,但我想不出该怎么写。
下面是如何做一个函数(可以直接在工作表公式中使用)来形成一个和。
Function eval_sum(n As Long, x As Double) As Double
Dim s As Double, i As Long
For i = 0 To n - 1
s = s + (x + i) ^ 2
Next i
eval_sum = s * 100 / 3
End Function
这个函数评估:
100/3 * (x^2 + (x+1)^2 + (x+2)^2 + ... + (x+(n-1))^2)
我不太清楚你是否想这样做。如果不是,你可以根据自己的需要调整代码。
小问题:我用了 Long
而非 Integer
. 算了吧 Integer
存在。这其实是有限内存和16位计算机时代的遗留问题。在现代Excel中,一个 Integer
反正是用32位存储的。你只是无端地冒着溢出的风险。