You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求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),"无库存")

公式说明:

  1. SCAN(0,B:B,LAMBDA(a,b,a+b)):逐行累加收货数量,生成累计库存序列
  2. XLOOKUP查找第一个累计值≥当前库存的位置,返回对应收货月份(即最早剩余库存的批次月份)
  3. 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)),"无库存")

公式说明:

  1. OFFSET(B$1,0,0,ROW(B:B)):动态生成从第一行到当前行的数量区域
  2. SUMIF累加区域内数量,得到累计库存值
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:40:03