【问题标题】:Including a non-adjacent cell in a Range (series) in the XIRR formula在 XIRR 公式的范围(系列)中包括一个不相邻的单元格
【发布时间】:2014-01-04 21:04:59
【问题描述】:

我使用的 XIRR 公式如下:

=XIRR(E$11:E17,B$11:B17)

但需要在值和日期范围中添加一个额外的不相邻单元格。

我的第一次尝试:

=XIRR((E$11:E17,H17),(B$11:B17,B17))

导致#VALUE

我已尝试使用 CHOOSE 函数进行如下操作:

=XIRR(CHOOSE({1,2},E$11:E17,H17),CHOOSE({1,2},B$11:B17,B17))

但这并不能产生正确的结果。

我不知道如何在范围末尾添加一个单元格。以下确实可以提供正确的结果,但对我不起作用,因为我需要使用范围和单个单元格,而不是所有单个单元格

=XIRR(CHOOSE({1,2,3},E11,E12,H13),CHOOSE({1,2,3},B11,B12,B13))

感谢您的帮助。

【问题讨论】:

  • +1 因为你显然已经很好看了。对于多列选择,OFFSET 解决方法将不适用(它适用于单个范围或列中的不连续范围)。出于同样的原因,CHOOSE 解决方法很麻烦。如果H11:16 为空白,那么=XIRR(CHOOSE({1,2},E$11:E17,H11:H17),CHOOSE({1,2},B$11:B17,B$11:B17)) 将起作用,因为CHOOSE 的范围现在大小相似
  • @brettdj。不幸的是,这些值不是空白的。
  • 我认为您当时受到了阻碍....我可以编写一个 UDF,但您认为重新组织数据可能更有意义?我会请公式向导 Barry Houdini 来看看。
  • 现在我自己计算并使用 VBA 运行求解器十亿次,但这不是最佳解决方案。感谢您的帮助。

标签: excel excel-formula xirr


【解决方案1】:

我弄清楚了它是如何工作的,并认为我会与遇到此问题的任何人分享。

诀窍在于,FREQUENCY 函数返回的数组比输入数组多一个元素。我将在此处省略对该函数的全部解释,因为帮助文件做得很好,但由于在本例中实现它,它返回一个类似 {0;0;0;1} 的数组。当执行 1-{} 操作时,我们得到了数组 {1;1;1;0}。

该数组现在与一个值数组(连续单元格)一起输入到 IF 函数,以评估等于 1 的元素(在上面的数组中)和单个值(离群值单元格)以评估对于等于 0 的元素。因此,生成所需的数组以用作 XIRR 公式的输入。

注意:FREQUENCY 函数不必使用值数组之一作为输入。它只需要一个比所需输出数组小一个元素的数值数组。您可以在充满 0 的一侧创建一个隐藏列,并在整个工作表中根据需要重复使用它。如果使用 0,则 FREQUENCY 函数中的第一个值可以是任何大于 0 的值。例如,1 使其易于阅读。 9^9 被用作任意大的值。

您可以重复此过程,从一张纸上构建一个离散单元阵列。

【讨论】:

  • 听起来这可能是一个有用的答案 - 但你能包括实际的公式吗?
  • 这是对我上面 lori_m 对解释公式的回应的回应:“=XIRR(IF(1-FREQUENCY(9^9,B11:B17),E11:E17,H17),IF( 1-频率(9^9,B11:B17),B11:B17,B17))"。
【解决方案2】:

您可以尝试类似的方法:

=XIRR(IF(1-FREQUENCY(9^9,B11:B17),E11:E17,H17),IF(1-FREQUENCY(9^9,B11:B17),B11:B17,B17))

【讨论】:

  • 我试过了,它产生了正确的结果+1。我需要将其应用于一整列不同形状的数组[看起来像它一样工作]。您能否解释一下它为什么起作用,特别是您如何使用频率公式转换数组。谢谢
  • 注意:我必须在每个 IF 语句周围加上 ARRAYFORMULA() 才能完成这项工作。
猜你喜欢
  • 2010-09-24
  • 1970-01-01
  • 2018-01-20
  • 2023-04-10
  • 2018-06-04
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多