【发布时间】:2013-03-16 13:06:52
【问题描述】:
我目前正在计算股票投资回报率。我有大约 10 年的历史数据,而我构建函数的方式需要很长时间才能完成这项工作。例如,我有 11 列和 2872 行来计算每天的回报。
my Function
Public Sub CalcROI(ByVal ColPick As Integer, ByVal ColPrint As Integer)
Dim irow As Integer
Dim iCol As Integer
For irow = 4 To 2873
'Calculating ROI
Cells(irow + 1, ColPrint).Value = (Cells(irow + 1, ColPick).Value - Cells(irow, ColPick).Value) / Cells(irow, ColPick).Value
Next irow
End Sub
程序的实现是
CalcROI ColPick:=4, ColPrint:=17
ColPick - 需要从哪里选择值进行计算
ColPrint - 在列上需要打印输出
【问题讨论】:
-
您的问题没有问题!我想你想加快速度。您可以在计算中取出 +1 并将 For 参数更改为运行 5 到 2784,但为什么不将公式放入电子表格中?
-
因为我想使用 VBA 菜单驱动程序动态执行操作...我基本上是在计算风险价值 - 历史方法和该表中的股票信息来自彭博终端...以上是 VaR 计算的一部分
-
您可以通过在开头添加
Application.Screenupdating = false来显着加快当前代码的运行速度。