Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 如何计算回报和累计。返回二维数组_Excel_Vba - Fatal编程技术网

Excel 如何计算回报和累计。返回二维数组

Excel 如何计算回报和累计。返回二维数组,excel,vba,Excel,Vba,我想计算二维数组中股票收益数据集的收益率和累积收益率 因此,在实践中,我尝试编写另一个子函数,它声明了一个包含return和cumulative return的二维数组,以完成相同的工作,正如下面所述的cumulative return函数。范围值可以直接指定给二维数组,反之亦然。我们不需要使用.Offset函数 这是股票收益(20个数字的数据“收益”): 我已经使用以下代码计算了累积回报: Sub ReadWrite() Dim dataRange As String, startRa

我想计算二维数组中股票收益数据集的收益率和累积收益率

因此,在实践中,我尝试编写另一个子函数,它声明了一个包含return和cumulative return的二维数组,以完成相同的工作,正如下面所述的cumulative return函数。范围值可以直接指定给二维数组,反之亦然。我们不需要使用.Offset函数

这是股票收益(20个数字的数据“收益”):

我已经使用以下代码计算了累积回报:

Sub ReadWrite()
    Dim dataRange As String, startRange As String, outRange As String
    Dim i As Integer, nData
    Dim ret, cum_ret

    Worksheets("Stock").Activate
    Columns("C").ClearContents
    dataRange = "B2:B22"
    startRange = "B2"
    outRange = "C2"
    nData = Range(dataRange).Count
    cum_ret = 1

    For i = 1 To nDat
        ret = Range(startRange).Offset(i - 1, 0)
        cum_ret = (1 + ret) * cum_ret
        Range(outRange).Offset(i - 1, 0) = cum_ret
    Next i
End Sub

不清楚你在问什么。您的现有代码有问题吗?还是您正在要求他人为您编写一些新代码?我正在寻求帮助以编写新代码,这是一个关于我的家庭作业和库存的问题-我将键入整个作业问题,这可能会澄清:“3.(读写数据)“讲师4_FunctionProcedure.xlsm”模块“示例2”介绍从Excel电子表格读取退货数据、计算累计退货以及将结果写入电子表格的三个子过程。在本练习中,您将编写另一个子过程ReadWrite_Array2()并声明二维数组ret和cum_ret执行相同的任务。请注意,范围值可以直接分配给二维数组,反之亦然。因此,您不需要使用.Offset逐个单元格读取和写入数据。“在寻求帮助之前,最好先尝试,复习这篇关于提出家庭作业问题的帖子。。。
Sub ReadWrite()
    Dim dataRange As String, startRange As String, outRange As String
    Dim i As Integer, nData
    Dim ret, cum_ret

    Worksheets("Stock").Activate
    Columns("C").ClearContents
    dataRange = "B2:B22"
    startRange = "B2"
    outRange = "C2"
    nData = Range(dataRange).Count
    cum_ret = 1

    For i = 1 To nDat
        ret = Range(startRange).Offset(i - 1, 0)
        cum_ret = (1 + ret) * cum_ret
        Range(outRange).Offset(i - 1, 0) = cum_ret
    Next i
End Sub