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


0

我们正在处理数百个项目的表格,其总价值远高于我们的预算。为了确定项目的优先顺序,我们决定首先选择最早的项目,直到我们的预算限额满足为止。

例如,下表显示了项目(A列),开始日期(B列)和金额(C列)。预算金额设定为3,500美元但可以更改,但项目总价值为5,000美元,因此并非所有项目都可以使用。我想要一个D列的公式(在这里填写以供说明),它可以按照开始日期的顺序选择最高$ 3,500的项目。

在此输入图像描述

我已经使用小公式或其他冗长的SUMIF计算来解决这个问题,但我似乎无法捕捉预算金额,这可以随时变化,并建立起始日期和预算之间的关系。

附注是实际表格是100行长,预算超过1000万美元 - 在下面的示例中,列表排除了项目4,因为添加它会使我们超出预算,但实际上一个公式排除了大多数但包括项目4因为四舍五入问题会没事的。

Answers:


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

PS。

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

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


这正是我想要的公式!感谢Akina的快速帮助 - 为我节省了许多非生产性的时间!
lrmoro

如果您有一个大的值,早期累计超过限制,这将不起作用。例如,如果最早的日期超过3500美元,它应该跳过它并从下一个日期开始(在这种情况下,此公式不选择任何项目)。或者,在OP的数据中,将$ 2500替换为项目5的$ 350.此公式将以先前的总值为止停止。根据这个问题,它应该跳过大值并继续从以后的日期中选择合格的项目。
fixer1234

@ fixer1234这完全对应于任务。它首先选择最旧的项目,选择所有项目直到我们的预算限制满足,而您提供忽略“最早的项目优先”条件并弹出最旧的项目。
Akina

问题是,只要任何值超出预算,它就会停在前一个值。OP的例子恰好不包括那种情况。我在答案中说明了问题。
fixer1234

@ fixer1234这是作者“我们已经决定”的结果 - 当然他必须把这个机会考虑在内。但如果他这样做,任务就会改变。
Akina

2

Akina和Rajesh H提供了优雅的解决方案,适用于问题中的示例。然而,这种方法有一个缺点,即它们太早停止。如果您有一个超出预算的大型项目,无论是单独还是累计总量,它都会停止前一个项目,而不是跳过不合格项目并继续寻找其他合格项目。例如:

在此输入图像描述

在最好的情况下,我按时间顺序替换了第二个大型项目。这会推动累积超过预算,所以它停止了一个项目而不是添加本来预算内的项目。

在第二种情况下,我使最早的项目大于预算。它不是跳过它而是寻找后来合格的,而是停止并且不返回任何东西。

我的假设是,目标是填补预算,首先优先考虑最老的项目。如果旧项目不符合预算,我认为我们不应该停止关注这一点。

这是一个没有问题的简单解决方案。

在此输入图像描述

我做了几个大的价值替换只是为了说明公式是如何工作的。

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

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

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

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

这总结了之前的任何合格值,并为该项目添加了值。如果项目将总计超出预算,则会发布null,否则会添加项目的值。它为每个后续项目执行此操作,因此您始终可以获得所有符合条件的项目。

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


这是更好的一个,并满足你通过评论显示的每一个关注点,完美的10☺
Rajesh S

0

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

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

如果您有一个大的值,早期累计超过限制,这将不起作用。例如,如果最早的日期超过3500美元,它应该跳过它并从下一个日期开始(在这种情况下,此公式不选择任何项目)。或者,在OP的数据中,将$ 2500替换为项目5的$ 350.此公式将以先前的总值为止停止。根据这个问题,它应该跳过大值并继续从以后的日期中选择合格的项目。
fixer1234

感谢@ fixer1234提供有价值的建议让我再次通过,,,如你所说,任何你想要通过的更正/提示,然后plz只是写。“如果350被2500替换,那么它只选择Project 3。如果350是500然后它选择Pr1,2,3,5“!☺
Rajesh S
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.