2013-10-08 89 views
0

在Excel中,我想計算項目的XIRR。
我的付款分爲兩個單獨的範圍。
但XIRR功能(和其他)接受單個範圍作爲參數。
如何合併函數參數中的範圍? 喜歡的東西,因爲這合併/混合單元格作爲公式參數的範圍

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

感謝您的任何建議

回答

2

我試圖不使用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數據類型應該沒問題。

+0

謝謝,偉大的意見。效果很好 –

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))

但可能不容易擴展爲更大範圍......

+1

使用Choose():) +1我幾乎從來沒有找到一種方式來使用它 –

0

我不知道XIRR,但我試圖做與RANK.EQ相同,我發現所有需要的是括號,即=RANK.EQ(J6,(J$6:$J$999,S$6:$S$999),0)