我刚刚意识到,您可以通过将括号中的引用集合括起来(即= 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