我正在编写一段代码,我对Excel的XIRR
函数有一个问题。
您有一个包含2列(日期和金额)的矩阵,因此输入是矩阵、日期和数量。在代码内部,它接受低于您用作输入的日期的值,用这些值创建一个新的数组,并添加您输入的日期和金额。并且输出应该是该数组的XIRR
。它似乎不起作用。它适用于IRR
,日期是一个重要的输入。有人知道如何解决这个问题吗?提前感谢!
Function Retorno(matriz As Range, dia As Date, valuacion As Double) As Double
Dim Datos As Range
Dim Aux1()
Dim Aux2()
Dim i, j, m, n As Integer
Set Datos = matriz
j = 0
For i = 1 To Datos.Rows.Count
If Datos(i, 1) <= dia Then
j = j + 1
End If
Next i
ReDim Aux1(1 To j + 1)
ReDim Aux2(1 To j + 1)
For n = 1 To j + 1
Aux1(n) = Datos(n, 2)
Next n
Aux1(j + 1) = valuacion
For m = 1 To j + 1
Aux2(m) = Datos(m, 1)
Next m
Aux2(j + 1) = dia
Retorno = WorksheetFunction.Xirr(Aux1, Aux2)
End Function
发布于 2018-06-22 01:49:57
最后一个日期是用第一个日期覆盖数组中的第二个日期,在Aux2(j + 1) = dia
数组中有两个完全相同的日期。
您可能想要删除该行。
发布于 2019-10-05 02:27:39
这个问题的另一个可能的答案是将日期转换为数字,如果这样做的话: Aux2(m) = Datos(m,1)*1XIRR也适用。
https://stackoverflow.com/questions/50974111
复制相似问题