求Excel公式:基于FIFO计算当前库存的最早收货月份
基于FIFO原则计算最早库存对应的收货月份的Excel公式
前提假设
- 收货批次按时间升序排列(最早收货行在上)
- 数据列定义:
A:A:收货月份(格式为日期或标准化文本,如"2023-01")B:B:对应批次的收货数量D2:当前库存数量(若为多行SKU,可改为D:D对应每行库存)
Excel 365/2021 动态数组公式(推荐)
在H2单元格输入以下公式,下拉填充:
=IFERROR(XLOOKUP(TRUE,SCAN(0,B:B,LAMBDA(a,b,a+b))>=D2,A:A,,1),"无库存")
公式说明:
SCAN(0,B:B,LAMBDA(a,b,a+b)):逐行累加收货数量,生成累计库存序列XLOOKUP查找第一个累计值≥当前库存的位置,返回对应收货月份(即最早剩余库存的批次月份)IFERROR处理库存为0时的错误返回
兼容旧版Excel的公式
在H2单元格输入以下数组公式,按Ctrl+Shift+Enter确认后下拉填充:
=IFERROR(INDEX(A:A,MATCH(TRUE,SUMIF(OFFSET(B$1,0,0,ROW(B:B)),">0")>=D2,0)),"无库存")
公式说明:
OFFSET(B$1,0,0,ROW(B:B)):动态生成从第一行到当前行的数量区域SUMIF累加区域内数量,得到累计库存值MATCH定位第一个累计值≥当前库存的行号,INDEX返回对应月份
多SKU场景适配(Excel 365)
若需按SKU分别计算,假设C:C为SKU列,H2公式改为:
=IFERROR(XLOOKUP(TRUE,SCAN(0,FILTER(B:B,C:C=C2),LAMBDA(a,b,a+b))>=D2,FILTER(A:A,C:C=C2),,1),"无库存")
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

