根据排名分配出货量(excel 基础解决方案)

Allocation of shipments based on ranking (excel based solution)

我有一些商店清单。我必须根据他们的排名分配出货量。分配应该以这样的方式进行,即每个商店不应少于 25 批货和多于 100 批货。实际问题解释如下。

Total SHipments=150

Shop Id              A         B          C          D            E

Allocation (%)       30%      28%        25%         10%          7%

Min.                 25       25         25          25           25

Max.                100       100        100         100          100

Actual Allocation  %*150
                   =45        42         37           15          11

My Requirement     45(>25)   42(>25)    37(>25)      25(<25)      1(<25)

所以我的要求是基于排名,excel 应该实际分配给排名靠前的人(25 到 100 之间),随着排名下降,它应该满足更好的排名和将其设置为 25,然后分配 rest.I 我想我已经把问题说清楚了,但如果仍然存在歧义,请告诉我。我是这个社区的新手。如果我不能以正确的方式post提问,请原谅我。

要根据以下屏幕截图中显示的 table 中的信息获得所需的结果,请使用以下公式:

=INT(MIN(MAX($C*B,B),B))

将上述公式放在B16单元格中。 INT 被用作 37.5 的结果是 37。

在单元格C16中放置以下公式,并根据需要将其复制到右侧。这是基于从左到右降序排列的分配:

=IF(SUM($B:B)+INT(MIN(MAX($C*C,C),C))<=$C,INT(MIN(MAX($C*C,C),C)),$C-SUM($B:B))

max函数用于return最小值。当您的公式 return 的结果低于最小值时 max 函数 return 的最小值。当公式的结果超过最大允许值时,MIN 函数会执行相同的操作。它将 return 最大允许值,因为它是两个数字中的最小值。

更新:排名乱序

当他们是平局并且总需求超过可用出货量时,这不起作用

我用了你的 table 并添加了一个帮助行来确定排名第 6 行。我使用以下公式得出排名

=RANK(B5,$B:$F)

用这种方法,有可能有领带。您可以研究如何得出具有领带的独特排名。此解决方案的其余部分将假设排名没有关系。

在第 11 行中,每个商店的“需求”是根据最大和最小约束计算的,并向下舍入到最接近的整数。下面的公式放在B11,复制右边:

=ROUNDDOWN((MAX(MIN(B5*$C,B9),B7)),0)

在第13行中,实际发货或“供应”的数量由B13中的以下公式确定并复制到右侧。

=IF(SUMPRODUCT(($B:$F<=B6)*$B:$F)<=$C,B11,MAX($C-SUMPRODUCT(($B:$F<=(B6-1))*$B:$F),0))

仅供参考 - SUMPRODUCT 在其中执行类似数组的计算。因此,请避免使用完整的 column/row 引用,例如 A:A,而是减少数据范围或更接近数据的范围,以避免大量过度计算,这可能会使您的系统陷入困境。当公式在多个单元格中重复时尤其如此。