繁体   English   中英

Excel 中 VBA 的新功能。 试图对递增的 function 求和

[英]New to VBA in Excel. Trying to sum an incremented function

所以我想做的是取两个值(x)和(y)之间的差来得到(n)。 然后我想通过公式 (n) 运行 (x) 次,每次递增 (x)。 然后我想 output 将所有这些结果的总和放入一个单元格中。 无法弄清楚如何像平常一样在一个单元格内整齐地完成它,所以我曾经转向 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 之间。 我认为肯定会起作用的唯一方法是混乱的,我将在一列中留出大量单元格,这些单元格将单独计算每个迭代,然后将所有这些加在一起。

或者,如果有一种方法可以编写一个 function 可以计算 ((x+n)^2)*100/3 的 sum(n),那会更好,但我想不出它会如何写。

以下是如何使 function(可直接在工作表公式中使用)形成总和:

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

这个 function 评估:

100/3 * (x^2 + (x+1)^2 + (x+2)^2 + ... + (x+(n-1))^2)

目前尚不完全清楚这是否是您想要做的。 如果没有,您可以调整代码以满足您的需求。

小点:我使用Long而不是Integer 忘记Integer存在。 它确实是从有限的 memory 和 16 位计算机时代遗留下来的。 在现代 Excel 中, Integer无论如何都以 32 位存储。 您只是无缘无故地冒着溢出的风险。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM