VBA XIRR 函数数据类型与动态数组不匹配

问题描述

我有一个电子表格,其中包含我需要拆分使用的帐户列表,并使用 XIRR 功能自动执行计算过程。我在 C 列中有帐号,这就是我需要拆分每个部分的方式。我在 E 列中有日期,在 F 列中有现金流量。

到目前为止,我所拥有的是比较 C 列中数据的代码,如果它们不同,则在它们之间放置一个空行。然后它检查空行,并将文本“IRR”放在 A 列中,然后我需要 XIRR 函数来运行并在 K 列中的那一行上输出结果。数据是通过转到其中的行获得的IRR 在 A 列,移动到 C 列,向上移动一个单元格,然后选择块中的所有内容,直到下一个空行,移动,对第二个数组执行相同操作,然后将它们放入 XIRR 函数中。

我有代码可以放入新标题,将 IRR 添加到最后一行,因为它不是自动完成的,然后删除添加到第二行的“IRR”,因为第一行与标题不同。我的问题来自我不断收到的两个错误。它一直说 dateArray 的类型 13 不匹配。这是因为我卡在了第二行,它试图从标题获取数据,或者如果它通过那里然后它说同样的。

这是我所拥有的;

Sub XirrCalc()

 Dim lRow As Long
 Dim DatesArray() As Date
 Dim CashflowArray() As Double
 Dim i As Integer
 
 Range("A1").Select
 ActiveCell.Offset(0,11).Value = "IRR %"
 Range("A1").Select
 Selection.End(xlToRight).Select
 Selection.Offset(0,-1).Select
 Selection.copy
 Selection.Offset(0,1).Select
 Selection.PasteSpecial Paste:=xlPasteFormats,Operation:=xlNone,_
    SkipBlanks:=False,Transpose:=False
 Application.CutcopyMode = False
 
 Range("A1").Select
 Selection.End(xlDown).Select
 Selection.Offset(1,0).Select
 Selection.Value = "IRR"
 Selection.Offset(-1,0).Select
 Selection.copy
 Selection.Offset(1,0).Select
 Selection.PasteSpecial Paste:=xlPasteFormats,Transpose:=False
 Application.CutcopyMode = False
 Range("A1").Select
 
 For lRow = Cells(Cells.Rows.Count,"C").End(xlUp).Row To 2 Step -1
 If Cells(lRow,"C") <> Cells(lRow - 1,"C") Then Rows(lRow).EntireRow.Insert
 If Cells(lRow,"A").Value = "" Then Cells(lRow,"A").Value = "IRR"
 Next lRow
 
 Range("A1").Select
 ActiveCell.Offset(1,0).Select
 Selection.ClearContents
 
 If Cells(lRow,"A").Value = "IRR" Then Cells(lRow,"A").Offset(-1,4).Select
 
 Range(Selection,Selection.End(xlUp)).Select
 i = Selection.Rows.Count
 ReDim DatesArray(i)
 ReDim CashflowArray(i)
 
 
 DatesArray = Selection.CurrentRegion.Value
 Selection.Offset(0,1).Select
 Range(Selection,Selection.End(xlUp)).Select
 CashflowArray = Selection.CurrentRegion.Value
 Selection.Offset(1,6).Select
 
 ActiveCell.Value = Application.XIRR(CashflowArray,DatesArray)

End Sub

这不是最干净的方法,我相信它可以做得更好,因此感谢您提供任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)