Excel:在数组公式中包含范围的公式

我们有Excel中的数据,如下所示:

| A | B | C | ————————————————————————————————————————— 1 | Amount | % Complete 1 | % Complete 2 | 2 | $ 1,000 | 25% | 50% | 3 | $ 600 | 50% | 100% | 4 | $ 2,500 | 75% | 100% | 

每个行项目是我们同意支付的任务的成本,每个“完成%”列是特定date的完成百分比。 我们总结了截止到当天为止支付的金额,根据百分比付款,这意味着对于第一个“完成%”列,我们可以使用数组公式计算所欠的金额{=SUM(A2:A4*B2:B4)}

然而,后续栏目只需要支付目前应付款项和以前已付款项之间的差额。

让事情更复杂:

  • 如果没有变化,数据将是空白的。 例如,如果在第一次检查时有25%的检查完成,而第二次检查仍然有25%完成,则第二个检查的列中相应的单元格将为空白。
  • 这个百分比可能会下降,从而导致一个负数的支付。 例如,如果在第一次支票中有50%完成,但是进度倒退,则第二次支票可能有25%,这意味着钱会归还给我们。

所以对于第一个之后的“%Complete”列,我需要在当前列之前的“%Complete”列中的同一行中的最后一个非空白单元格。 使用这个解释 ,我能够创build一个公式:

 =$A2*(C2-LOOKUP(2,1/($B2:B2<>""),$B2:B2)) 

这将计算一个特定单元格应付多less,所以在上面的例子中,它将产生$ 250:$ 1,000 *(50% – 25%)。 它会继续工作,并继续处理查找最后一个非空白列。

我想在数组公式中使用上面的公式,但不知道如何去做。

所以,我们来回答这个问题:当一个公式已经有一个范围内(即上面的公式中的$B2:B2 ),是否有可能在数组公式中使用它,如果是这样,如何呢? 在一个正常的公式中,你可以将一个单元格引用(例如A1 )转换成一个范围(例如A:A ),但是有一种types的语法来使用范围内的范围?

也很乐意考虑完全不同的方法来解决这个问题,但由于如何使用这个电子表格,我们不幸的是不能使用VBA。

要回答您的文章的最后一部分,我假设您将更新和计算进度和付款周期。 在这种情况下,您只需要将当前时间与以前的时间进行比较。 如果是这种情况,那么以这种forms使用IF()函数应该达到这个目的。

=IF(Compl2>Compl1,Compl2*Rate,(Compl2*Rate-Compl1*Rate))