在 Excel 中,我想计算项目的 XIRR。
我的付款在两个不同的范围内。
但是 XIRR 函数(和其他)接受单个范围作为参数。
如何合并函数参数中的范围?像这样的东西
=XIRR(MixRanges(a1:a4,d1:d2), MixRanges(b1:b4,e1:e2))
感谢您的任何建议
我试图不使用 UDF,但我想不出一个聪明的内置函数来使用。
将此代码添加到您的工作簿:
Option Explicit
Public Function MergeRange(ParamArray rng()) As Single()
Dim i As Long
Dim count As Long
Dim r As Excel.Range
Dim s() As Single
For i = LBound(rng) To UBound(rng)
If (TypeOf rng(i) Is Excel.Range) Then
For Each r In rng(i)
ReDim Preserve s(count)
s(count) = r.Value
count = count + 1
Next r
End If
Next i
MergeRange = s
End Function
并像这样使用它:
=XIRR(MergeRange(A2:A6,D2:D6),MergeRange(B2:B6,E2:E6),0.1)
这将接受多个范围,获取它们的值,并将值作为连续数组返回。由于 XIRR 需要值和日期,因此使用Single
数据类型应该没问题。
对于您的具体示例,您可以使用CHOOSE
,即
=XIRR(CHOOSE({1,2,3,4,5,6},A1,A2,A3,A4,D1,D2),CHOOSE({1,2,3,4,5,6},B1,B2,B3,B4,E1,E2))
但这可能不容易扩展到更大的范围......
我不知道 XIRR,但我试图做同样的事情RANK.EQ
,我发现所需要的只是括号,即=RANK.EQ(J6,(J$6:$J$999,S$6:$S$999),0)
.