首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel VBA XIRR未按预期工作

Excel VBA XIRR未按预期工作
EN

Stack Overflow用户
提问于 2018-06-22 01:10:01
回答 2查看 436关注 0票数 1

我正在编写一段代码,我对Excel的XIRR函数有一个问题。

您有一个包含2列(日期和金额)的矩阵,因此输入是矩阵、日期和数量。在代码内部,它接受低于您用作输入的日期的值,用这些值创建一个新的数组,并添加您输入的日期和金额。并且输出应该是该数组的XIRR。它似乎不起作用。它适用于IRR,日期是一个重要的输入。有人知道如何解决这个问题吗?提前感谢!

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2018-06-22 01:49:57

最后一个日期是用第一个日期覆盖数组中的第二个日期,在Aux2(j + 1) = dia数组中有两个完全相同的日期。

您可能想要删除该行。

票数 0
EN

Stack Overflow用户

发布于 2019-10-05 02:27:39

这个问题的另一个可能的答案是将日期转换为数字,如果这样做的话: Aux2(m) = Datos(m,1)*1XIRR也适用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50974111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档