在Excel公式中,我试图在目标之间分配总储蓄值,但一旦达到目标,将剩余的分配给其他目标

问题描述 投票:0回答:1

Excel 365

在下表中,我尝试在“已分配”下的 D 列中创建一个公式,该公式根据目标和分配百分比分配 D1 的分割,一旦分配的金额达到目标金额,它将停止接收任何进一步的分配,剩余的分配将停止。将分散到其他目标(使用剩余分配百分比的比例进行分配)

A B C D
1 节省 39000
2 目标名称 目标金额 分配% 已分配
3 目标1 2,000,000 英镑 10% £7,571
4 目标2 15,000 英镑 25% £18,929
5 目标3 5,000 英镑 40% 5,000 英镑
6 目标 4 7,500 英镑 25% 7,500 英镑

我已经成功地制定了(强力)一个几乎有效的公式,我将尝试在下面分解我的逻辑,但希望有一个更好的方法,而不是试图修复我的。

我的公式取自D3:
=IF(B3<=$D$1*C3,B3,($D$1-SUMPRODUCT(($B$3:$B$6<=$C$3:$C$6*$D$1)*$B$3:$B$6))*(C3*(1/SUMPRODUCT(($B$3:$B$6>$C$3:$C$6*$D$1)*$C$3:$C$6))))

如果B3<=D1*C3,B3 this should set the allocated amount to be no higher than the target, this issue is that in the above example for row 4, 39k * 0.25 = 9,750 meaning this IF returns a false.

$D$1-SUMProduct(($B$3:$B$6<=$C$3:$C$6*$D$1)*$B$3:$B$6)) calculates the sum of any row that would have returned a true above and deducts them from D1 to leave the remaining amount to allocate. In this case it sees row 5 & 6 as true so deducts 5k&7.5k from 39k to leave 26.5k

(C3*(1/SUMPRODUCT(($B$3:$B$6>$C$3:$C$6*$D$1)*$C$3:$C$6)))) 与上面类似来查找分配% 对于 if 来说是假的,并将它们加在一起。它将 1 除以该总和,得到适用于新 % 的原始分配 % 的因子,在本例中为 1/( 0.1 + 0.25) = 2.86

2.86 * 0.1 = 0.286

+

2.86 * 0.25 = 0.714

总计 = 1 (100%)

剩余的分配金额乘以新的百分比即可得到最终分配。

此问题不考虑此新分配是否使分配金额高于 D4 中所示的目标

我希望这是有道理的,我真的希望有人能回来提供一种非常明显的方法来做到这一点,而我所缺少的。

如有任何帮助,我们将不胜感激。

excel
1个回答
0
投票

该公式位于单元格 E3 中

=LET(max,D$1*C3:C6,
maxes,IF(max>B3:B6,B3:B6,0),
remain,D$1-SUM(maxes),
perc,SUM(IF(maxes=0,C3:C6)),
tot,IF(maxes=0,maxes+remain*C3:C6/perc),
maxes+tot)

计算结果

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.