如何实现跳过超支项的累计预算列,最大化100美元优先级采购
预算累计成本跳过超支项的公式方案
现有按采购优先级从上到下排列的物品成本列,预算为100美元,需要在优先采购的前提下最大化使用预算。当前使用公式IF(SUM($A$1:A1) <= 100, SUM($A$1:A1), "Over")生成累计成本列时,一旦出现超支显示Over,后续符合预算的项也无法计入累计,以下是解决方法:
示例数据集
| 物品成本 | 当前累计成本输出 | 期望输出 |
|---|---|---|
| 40 | 40 | 40 |
| 40 | 80 | 80 |
| 40 | Over | Over |
| 20 | Over | 100 |
| 20 | Over | Over |
解决方案
1. Excel 365/2021 动态数组公式
使用SCAN函数迭代累计,自动跳过超支项,直到预算用尽:
=LET( budget, 100, costs, A:A, SCAN(0, costs, LAMBDA(acc, cost, IF(acc="Over", "Over", IF(acc + cost <= budget, acc + cost, "Over") ) )) )
逻辑说明:从0开始累计,若当前累计值已显示Over,后续直接输出Over;若累计值加当前物品成本不超预算则累加,超预算则输出Over,后续项保持Over。
2. 旧版Excel兼容公式
假设累计列从B1开始:
- B1单元格公式:
=IF(A1<=100,A1,"Over")
- B2及以下单元格公式(下拉填充):
=IF(B1="Over", IF(LOOKUP(9.99E+307,$B$1:B1)+A2<=100,LOOKUP(9.99E+307,$B$1:B1)+A2,"Over"), IF(B1+A2<=100,B1+A2,"Over") )
逻辑说明:先判断上一行是否为Over,如果是,就提取之前最后一个有效的累计值,加上当前成本判断是否超预算;如果上一行未超支,直接累加判断即可。
内容的提问来源于stack exchange,提问作者ElizaBeso000
相关产品推荐
相关产品推荐

