无需Solver的Excel公式:实现双履约中心库存向理想比例平衡
纯Excel公式实现双履约中心SKU库存调优(替代Solver)
问题背景
需要给FC-A、FC-B两个履约中心的SKU库存做调整,要求用纯Excel公式(不能用VBA、Solver,Solver速度太慢),满足:
- 每个SKU的
FC-A编辑量 + FC-B编辑量 = 给定的SKU总编辑量(正负都允许) - 单个FC的编辑量不能超过该SKU对应的最大限额
- 每行SKU独立计算,不跨行联动
- 调整后两个FC的库存占比尽可能接近预设的理想占比
核心解法逻辑
先计算无约束下的理想编辑量,再对超出限额的数值做截断处理,最后修正结果确保总编辑量匹配,全程用Excel内置函数实现,无需迭代工具。
公式实现(对应示例数据列)
先明确列对应关系(假设你的表格结构如下):
| 列 | 内容 |
|---|---|
| A | SKU |
| B | 总编辑量(给定值) |
| C | FC-A当前总量 |
| D | FC-B当前总量 |
| E | 总库存 |
| F | FC-A理想占比 |
| G | FC-B理想占比 |
| H | FC-A最小编辑限额 |
| I | FC-A最大编辑限额 |
| J | FC-B最小编辑限额 |
| K | FC-B最大编辑限额 |
| L | FC-A计算编辑量 |
| M | FC-B计算编辑量 |
1. FC-A编辑量公式(L2单元格)
=LET( adj_total, E2+B2, // 调整后的总库存 ideal_A_edit, adj_total*F2 - C2, // 无约束下FC-A的理想编辑量 cap_A, MEDIAN(H2, ideal_A_edit, I2), // 先给FC-A的编辑量做限额截断 temp_B, B2 - cap_A, // 此时FC-B的临时编辑量 cap_B, MEDIAN(J2, temp_B, K2), // 给FC-B的临时编辑量做限额截断 final_A, B2 - cap_B, // 修正FC-A的编辑量以匹配总编辑量 MEDIAN(H2, final_A, I2) // 最后再校验FC-A的限额,确保合规 )
2. FC-B编辑量公式(M2单元格)
=B2 - L2
示例验证(拿SKU a举例)
假设SKU a的FC-A限额是[-15,5],FC-B限额是[-10,10]:
- 调整后总库存=110+(-10)=100
- 理想FC-A库存=100*0.49=49 → 无约束编辑量=49-30=19(超出FC-A上限5)
- 截断FC-A编辑量为5 → 临时FC-B编辑量=-10-5=-15(超出FC-B下限-10)
- 截断FC-B编辑量为-10 → 最终FC-A编辑量=-10 - (-10)=0(符合FC-A限额)
- 最终结果:FC-A编辑0,FC-B编辑-10。调整后FC-A库存30(占30%)、FC-B库存70(占70%)——虽没完全达到理想占比,但已经在限额范围内最大化贴近目标,且满足总编辑量要求。
补充说明
- 这个方案通过两次截断+修正,确保同时满足限额和总编辑量的约束,是平衡计算效率和贴近理想占比的最优纯公式方案
- 如果需要进一步最小化占比偏差,可以引入偏差权重,但会大幅增加公式复杂度;当前方案在单行独立计算的场景下已经足够实用
内容的提问来源于stack exchange,提问作者me_bc
相关产品推荐
相关产品推荐

