基于FIFO的Google Sheets库存计算求助:多品类SUMIFs函数实现
解决多品类FIFO库存出库计算问题
看起来你已经搞定了同品类连续批次的FIFO出库计算,但多品类混排时,确实需要用SUMIFS来按品类分组统计,而不是简单的连续区域求和。下面是针对你需求的具体解决方案:
核心思路
我们需要按品类单独分组计算FIFO:
- 先匹配当前行所属品类的总销量
- 统计该品类在当前行之前的累计出库数量
- 用总销量减去累计出库,得到还需从后续批次出库的数量,再和当前入库批次的数量取最小值(同时避免负数)
具体公式(针对F列黄色单元格)
假设你的表格结构是:
- A列:品类名称(比如「绿色苹果」「黄色苹果」)
- C列:入库数量
- 另外有一个单独的区域(比如J:K列)用来记录各品类的总销量:J列是品类名,K列是对应累计销量(比如J1=「绿色苹果」,K1=550)
把原来的公式替换成下面这个(以F4单元格为例,下拉应用到所有黄色单元格):
=MAX(0, MIN(C4, XLOOKUP(A4, $J:$J, $K:$K, 0) - SUMIFS($F$3:F3, $A$3:A3, A4)))
公式拆解
XLOOKUP(A4, $J:$J, $K:$K, 0):精准匹配当前行的品类(A4)对应的总销量,找不到时返回0(避免报错)SUMIFS($F$3:F3, $A$3:A3, A4):只统计当前品类在当前行之前的累计出库数量(不会把其他品类的出库算进来)MIN(C4, 总销量-累计出库):确保当前批次最多出库自身的入库数量,不会超发MAX(0, ...):防止当总销量已经被之前的批次完全覆盖时,出现负数出库量
适配你的总销量单元格(如果G1是单一品类的总销量)
如果你的G1只是当前选中品类的总销量(比如只处理苹果时用G1),可以简化公式为:
=MAX(0, MIN(C4, $G$1 - SUMIFS($F$3:F3, $A$3:A3, A4)))
这样只要A列的品类和你要统计的品类一致,就会自动计算该品类的FIFO出库,其他品类会返回0(因为SUMIFS会过滤掉不同品类的行)
关于售价动态计算
如果你的售价是基于采购价(D列)的,比如售价=采购价×加价比例,那在对应的单元格(比如I列)可以用:
=F4*D4*1.2 # 这里1.2代表加价20%,你可以根据自己的定价规则调整
这样当F列的出库数量变化时,售价会自动关联采购价更新。
注意事项
- 确保A列的品类名称完全一致(比如不要出现「绿苹果」和「绿色苹果」两种写法),否则SUMIFS和XLOOKUP会匹配失败
- 如果你的总销量区域(J:K)有新增品类,公式会自动匹配,不需要修改
- 下拉公式时,注意绝对引用和相对引用的正确性:
$J:$J和$A$3:A3的绝对引用是为了固定范围,F3:F3是相对引用,会随着行号自动扩展
内容的提问来源于stack exchange,提问作者Code Guy
相关产品推荐
相关产品推荐

