【问题标题】:How merge/mix range of cell as formula parameter如何合并/混合单元格范围作为公式参数
【发布时间】:2013-10-15 10:10:04
【问题描述】:

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

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

感谢您的任何建议

【问题讨论】:

    标签: excel merge range


    【解决方案1】:

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

    【讨论】:

    • 这个功能在 Windows 下很好用,但在 mac os 下不行。有人知道可能是什么问题吗?
    • @mend 它对你不起作用怎么办?我刚刚在 Mac 上试了一下,看起来工作正常(Excel 版本 16.15)。
    【解决方案2】:

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

    但这可能不容易扩展到更大的范围......

    【讨论】:

    • +1 用于使用 Choose() :) 我几乎从来没有找到使用它的方法
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2019-03-17
      • 2014-12-11
      • 2022-01-22
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 2021-11-29
      相关资源
      最近更新 更多