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

Excel:在数组公式中包含范围的公式,excel,excel-formula,Excel,Excel Formula,Excel中的数据如下所示: | A | B | C | ————————————————————————————————————————— 1 | Amount | % Complete 1 | % Complete 2 | 2 | $ 1,000 | 25% | 50% | 3 | $ 600 | 50% | 100% | 4 | $ 2,500 |

Excel中的数据如下所示:

  |    A    |      B       |      C       |
  —————————————————————————————————————————
1 | Amount  | % Complete 1 | % Complete 2 |
2 | $ 1,000 |          25% |          50% |
3 | $   600 |          50% |         100% |
4 | $ 2,500 |          75% |         100% |
每个行项目都是我们同意支付的任务的成本,每个“%Complete”列都是截至特定日期的完成百分比。我们根据百分比汇总截至该日期的欠款,这意味着对于第一个“%Complete”列,我们可以使用数组公式
{=sum(A2:A4*B2:B4)}
计算欠款

但是,后续列只需支付当前应付金额与之前已支付金额之间的差额

使事情进一步复杂化:

  • 如果没有更改,数据将为空。例如,如果在第一次检查时完成了25%,在第二次检查时仍完成了25%,则第二次检查列中的相应单元格将为空
  • 百分比可能下降,导致支付的金额为负数。例如,如果某件事情在第一次检查时完成了50%,但进度倒退,那么第二次检查时可能会有25%,这意味着钱应该还给我们
因此,对于第一列之后的“%Complete”列,我需要在当前列之前的“%Complete”列中的同一行中的最后一个非空单元格。通过使用,我能够创建一个公式:

=$A2*(C2-LOOKUP(2,1/($B2:B2<>""),$B2:B2))
=$A2*(C2-LOOKUP(2,1/($B2:B2“”),$B2:B2))
这将计算特定单元格的应付金额,因此在上面的示例中,它将生成250美元:$1000*(50%-25%)。它将在您继续操作时继续工作,并将处理查找最后一个非空列的问题

我想在数组公式中使用上述公式,但不知道如何使用

这就引出了一个问题:当一个公式中已经有一个范围(即上面公式中的
$B2:B2
)时,是否可以在数组公式中使用它,如果可以,如何使用?在普通公式中,您可以将单元格引用(例如,
A1
)转换为一个范围(例如,
a:a
),但是否存在某种语法来使用范围内的范围


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

< P>来回答你的文章的最后一部分,我假设你会定期更新和计算进度和付款。在这种情况下,您只需将当前期间与前一期间进行比较。如果是这样的话,使用类似这样的形式的If()函数应该可以达到这个目的


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

使用您的公式:空单元格类似于0%。。。对吗?(有25%|[空]| 30%将导致250 |-250 | 50)但要回答你问题的一部分:不。你不能按你需要的方式拆分2D数组:(@DirkReichel,不完全是…空单元格意味着没有变化。因此,如果#1是25%,那么#2是空的,如果#3是50%,那么这意味着工作在#1完成了25%,在#2完成了25%)(但因为没有变化,审核人没有输入数据),然后在第3页又增加了25%到50%。如前所述:使用你的公式,这发生在我身上……我知道你想要的行为……只是好奇,我认为这不会起作用,因为上面的第一个要点是:空白数据。如果第一个百分比是25%(因此,25%在当时支付),第二个百分比为空白(因为没有变化),第三个百分比为50%,如果您只比较最后一个单元格,我们将再次支付全额50%(50%-0%),而不是50%-25%。