我剛剛意識到,您可以通過將括號中的引用集合括起來(即= IRR((C18:C62,$ B $ 1))這是一個有用的功能,但是從各種嘗試中,我得出結論,當範圍參考包含另一個工作簿或者使用偏移功能構建範圍時,它不起作用。是否有人知道解決方法這個或另一種方式來處理這個問題在另一張紙上有非連續範圍的Excel IRR公式
感謝您對所有您的幫助
我剛剛意識到,您可以通過將括號中的引用集合括起來(即= IRR((C18:C62,$ B $ 1))這是一個有用的功能,但是從各種嘗試中,我得出結論,當範圍參考包含另一個工作簿或者使用偏移功能構建範圍時,它不起作用。是否有人知道解決方法這個或另一種方式來處理這個問題在另一張紙上有非連續範圍的Excel IRR公式
感謝您對所有您的幫助
IRR功能:?!
語法時才: IRR(值,[猜測])
假設數據是在Range A1:A5
和Range B1
用於計算IRR
。
顯而易見=IRR(A1:A5)
會給出正確的結果。但=IRR(A1:A5,B1)
使excel假設B1
是[guess]
該公式的參數作爲語法狀態,因此給出的結果與=IRR(A1:A5)
相同。現在,如果在公式中添加另一個範圍(如=IRR(A1:A5,B1,C1)
),則excel將給出錯誤,說明too many arguments entered
。因此,對於非連續範圍,所有範圍都需要用括號括起來,如=IRR((A1:A5,B1))
(正如您在問題中提到的那樣)。這使Excel將其解釋爲由2個不同範圍組成的單個參數。
使用Offset
在IRR
中。
當範圍與偏移功能
構建良好的它不工作,IRR
不支持OFFSET
功能。
=IRR(OFFSET(A1,0,0,5))
是相同=IRR(A1:A5)
=IRR((OFFSET(A1,0,0,5),OFFSET(A1,0,1)))
是相同=IRR((A1:A5,B1))
以上使用Offset
會給你正確的結果兩個公式。
在IRR
使用從多頁紙張的範圍時的範圍內參考包括另一片/工作簿它不起作用
這是TRUE當您使用在不同的工作表一個公式。但是,如果您僅從一個工作表引用範圍,並且與當前工作表(其中一個正在輸入公式)不同,那麼IRR
函數將起作用。這意味着即使在Sheet1
中輸入了公式,=IRR(Sheet2!A1:A5)
也會得到期望的結果。但是,IRR
不允許使用一個公式中多個工作表的範圍。因此,如果輸入Sheet1
,則=IRR((A1:A5,Sheet2!B1))
不正確。
因此,要使用不同工作表的多個範圍,可以在VBA中使用UDF(用戶定義函數)。以下可能有所幫助
Function IRR_DEMO(rng1 As Range, ParamArray rng2() As Variant) As Double
Dim elem As Variant
Dim i As Long, cntr As Long
Dim arr() As Double
ReDim arr(1 To rng1.count) As Double 'set size of arr as per rng1
cntr = 1
For Each elem In rng1 'first range
arr(cntr) = elem.Value 'put range values in array
cntr = cntr + 1
Next elem
For i = LBound(rng2) To UBound(rng2) 'all the ranges apart from first range and in rng2
ReDim Preserve arr(1 To UBound(arr) + rng2(i).count) As Double 'reset size of arr as per rng2(i)
For Each elem In rng2(i)
arr(cntr) = elem.Value 'put range values in array
cntr = cntr + 1
Next elem
Next i
IRR_DEMO = IRR(arr) 'use array in IRR
End Function
您可以使用上述UDF作爲
=IRR_DEMO(A1:A5)
=IRR_DEMO(A1:A5,B1)
=IRR_DEMO(OFFSET(A1,0,0,5),OFFSET(A1,0,1))
=IRR_DEMO(Sheet2!A1:A5)
=IRR_DEMO(A1:A5,Sheet2!B1)
=IRR_DEMO(Sheet2!A1:A5,Sheet2!B1)
看到的影像以供參考。
Sheet1
Sheet2