如何用Power Query按先进先出规则处理零件发运退回的结余计算?
用Power Query实现零件发运退回的FIFO结余计算?
我们公司向外部喷漆厂发运各类零件,拥有每笔发运(Sent)与退回(Received)的历史记录,需按**先进先出(FIFO)**规则处理该记录:
- 仅保留仍存放在供应商处的发运记录
- 为每笔发运计算结余(Balance)——退回数量优先从最早的发运中抵扣,未完全退回的发运需显示剩余数量
现有记录示例
| 供应商 | 零件编号 | 日期 | 数量 | 类型 |
|---|---|---|---|---|
| S01 | P0001 | 2024-05-05 | -3 | 退回 |
| S01 | P0001 | 2024-05-04 | 2 | 发运 |
| S01 | P0001 | 2024-05-03 | -5 | 退回 |
| S02 | P0005 | 2024-04-24 | -6 | 退回 |
| S01 | P0001 | 2024-04-02 | 3 | 发运 |
| S01 | P0001 | 2024-03-11 | 10 | 发运 |
| S02 | P0005 | 2024-03-05 | 4 | 发运 |
| S02 | P0005 | 2024-02-05 | 3 | 发运 |
| S02 | P0001 | 2024-01-25 | -5 | 退回 |
| S02 | P0001 | 2024-01-14 | 5 | 发运 |
预期结果
| 供应商 | 零件编号 | 日期 | 数量 | 结余 |
|---|---|---|---|---|
| S01 | P0001 | 2024-05-04 | 2 | 2 |
| S01 | P0001 | 2024-04-02 | 3 | 3 |
| S01 | P0001 | 2024-03-11 | 10 | 2 |
| S02 | P0005 | 2024-03-05 | 4 | 1 |
规则说明
- S02的P0005零件先发送3件再发4件,退回6件,按FIFO规则剩余1件
- S01的P0001零件总发送15件,退回8件,优先从最早的10件发运中扣除,剩余2件,其余两笔发运全额留存
我尝试用Power Query实现该需求但无法完成,请问Power Query是否可行?若不可行再考虑使用VBA。
内容的提问来源于stack exchange,提问作者Albert
相关产品推荐
相关产品推荐

