【问题标题】:Excel: Formula containing a range inside of an array formulaExcel:包含数组公式内的范围的公式
【发布时间】:2017-07-14 09:21:38
【问题描述】:

我们在 Excel 中得到如下所示的数据:

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

每个订单项都是我们同意支付的任务成本,每个“完成百分比”列是截至特定日期的完成百分比。我们根据百分比汇总截至该日期的欠款金额,这意味着对于第一个“完成百分比”列,我们可以使用数组公式{=SUM(A2:A4*B2:B4)} 计算欠款金额。

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

让事情进一步复杂化:

  • 如果没有变化,数据将为空白。例如,如果某项工作在第一次检查时完成了 25%,而在第二次检查时仍完成了 25%,则第二次检查列中的相应单元格将为空白。
  • 百分比可能会下降,导致支付的金额为负数。例如,如果某事在第一次检查时完成了 50%,但进度倒退,那么第二次检查可能会达到 25%,这意味着钱应该归还给我们。

因此,对于第一列之后的“% Complete”列,我需要当前列之前的“% Complete”列中同一行中的最后一个非空白单元格。使用this explanation,我能够创建一个公式:

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

这将计算特定单元格的应付金额,因此在上面的示例中,它将产生 250 美元:1,000 美元 * (50% - 25%)。它会在您继续工作时继续工作,并会处理查找最后一个非空白列。

我想在数组公式中使用上述公式,但不知道该怎么做。

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

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

【问题讨论】:

  • 使用您的公式:空单元格就像 0%... 对吗? (有 25% | [空] | 30% 导致 250 | -250 | 50)
  • 但要回答您的部分问题:不。您不能按照您需要的方式拆分二维数组:(
  • @DirkReichel,不完全...空单元格意味着没有变化。因此,如果#1 为 25%,#2 为空白,#3 为 50%,这意味着工作在 #1 完成了 25%,在 #2 仍然完成了 25%(但因为没有变化,所以没有数据由审阅者输入),然后在 #3 再增加 25% 至 50%。
  • 如前所述:使用你的公式,这发生在我身上......我知道你想要的行为......只是想知道

标签: excel excel-formula


【解决方案1】:

为了回答您帖子的最后一部分,我假设您将定期更新和计算进度和付款。在这种情况下,您需要做的就是将当前时期与上一个时期进行比较。如果是这种情况,以这样的形式使用 IF() 函数应该可以达到目的。

=IF(Compl2&gt;Compl1,Compl2*Rate,(Compl2*Rate-Compl1*Rate))

【讨论】:

  • 我认为这不会起作用,因为上面的第一个要点:空白数据。如果第一个百分比是 25%(所以当时支付了 25%),第二个百分比是空白(因为没有变化),第三个百分比是 50%,如果你只比较最后一个单元格,我们将再次支付全部 50% (50%-0%) 而不是 50%-25%。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多