如何将单元格的合并/混合范围作为公式参数

时间:2013-10-08 13:05:06

标签: excel merge range

在Excel中我想计算项目的XIRR 我的付款分为两个不同的范围 但是XIRR函数(和其他)接受单个范围作为参数 如何合并函数参数中的范围? 像这样的东西

=XIRR(MixRanges(a1:a4,d1:d2), MixRanges(b1:b4,e1:e2))  

感谢您的任何建议

3 个答案:

答案 0 :(得分:3)

我试图不使用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数据类型应该没问题。

答案 1 :(得分:1)

对于您的具体示例,您可以使用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))

但是对于更大范围来说可能并不容易扩展......

答案 2 :(得分:0)

我不知道XIRR,但我试图对RANK.EQ做同样的事情,我发现所需要的只是括号,=RANK.EQ(J6,(J$6:$J$999,S$6:$S$999),0)