【发布时间】: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