2017-08-26 81 views
1

我刚刚意识到,您可以通过将括号中的引用集合括起来(即= IRR((C18:C62,$ B $ 1))这是一个有用的功能,但是从各种尝试中,我得出结论,当范围参考包含另一个工作簿或者使用偏移功能构建范围时,它不起作用。是否有人知道解决方法这个或另一种方式来处理这个问题在另一张纸上有非连续范围的Excel IRR公式

感谢您对所有您的帮助

回答

2

IRR功能:?!

语法时才: IRR(值,[猜测])

假设数据是在Range A1:A5Range 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个不同范围组成的单个参数。

使用OffsetIRR中。

当范围与偏移功能

构建良好的它不工作,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

enter image description here

Sheet2

enter image description here

相关问题