Excel 公式仅从列表中选择符合所选条件限制内的项目

Excel 公式仅从列表中选择符合所选条件限制内的项目

我们正在处理包含数百个项目的表格,总价值远远超出我们的预算。为了对项目进行优先排序,我们决定首先选择最老的项目,直到达到我们的预算限额为止,选择所有项目。

例如,下表显示项目(A 列)、开始日期(B 列)和金额(C 列)。预算金额设置为 3,500 美元,但可以更改,但项目总价值为 5,000 美元,因此不能全部采用。我想要一个 D 列(此处填写以供说明)的公式,该公式可以按开始日期的顺序选择最高 3,500 美元的项目。

在此处输入图片描述

我曾使用 Small 公式或其他冗长的 SUMIF 计算尝试过这个问题,但似乎无法捕捉到随时可能变化的预算金额,也无法建立开始日期和预算之间的关系。

附注:实际的表格有 100 行长,预算超过 1000 万美元 - 在下面的例子里,列表排除了项目 4,因为添加它会超出预算,但在实践中,由于舍入问题,排除大多数但包括项目 4 的公式是可以的。

答案1

D4=IF($C$1>=SUMIFS($C$4:$C$9,$B$4:$B$9,"<=" & B4),C4,"-")

附言:

使用 Small 公式或其他冗长的 SUMIF 计算

我建议仅使用 SUMIFS()。它可以轻松扩展附加条件,而将 SUMIF() 扩展为 SUMIFS() 需要重新排序函数参数。

答案2

Akina 和 Rajesh H 提供了适用于问题示例的优雅解决方案。但是,这种方法有一个缺点,就是它们会很快停止。如果你有一个大型项目,超出预算本身或累计总额,它都会在前一个项目处停止,而不是跳过不合格项目并继续寻找其他合格项目。例如:

在此处输入图片描述

在上面的案例中,我按时间顺序用一个大项目替代了第二个项目。这会使累计金额超出预算,因此它只停留在一个项目上,而不是添加在预算范围内的后期项目。

在第二种情况下,我让最早的项目超过了预算。它没有跳过它并寻找符合条件的后续项目,而是停止并且什么也不返回。

我认为目标是填补预算,优先考虑最老的项目。如果一个老项目超出预算,我认为我们不应该就此停止考虑。

这是一个不存在该问题的直接解决方案。

在此处输入图片描述

我做了几次大值替换只是为了说明该公式的工作原理。

作为第一步,我按时间顺序对数据进行了排序。第一个公式(在 D4 中):

=IF(C4>$C$1,"",C4)

如果第一个值按时间顺序低于预算金额,则使用它,否则保留为空。其余公式从第二个值(在 D5 中)复制而来:

=IF(SUM($D4:D$4)+C5>$C$1,"",C5)

这会将高于该值的所有先前合格值相加,并添加该项目的值。如果该项目的总金额超出预算,则会发布空值,否则会添加该项目的值。它会对每个后续项目执行此操作,因此您始终可以获得所有合格项目。

请注意,您可以改进您的策略。例如,对于我示例中的值,您的规则停止在 2400 美元。您可以通过添加其他优先级来选择较大的后期项目而不是较小的早期项目,从而更接近预算。如果您的项目列表像您描述的一样长,那么可能会有许多时间接近的组合可以填满预算。通过放宽最古老的第一个约束,您可以更接近预算。您还可以将年龄与其他目标(如项目规模)结合起来;例如,完成几个大项目而不是许多小项目。

答案3

该问题也可以通过使用以下公式来解决:

=IF(SUMPRODUCT(($C$4:$C$9)*($B$4:$B$9<=B4))<=$C$1,C4,"-")

相关内容