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

如何在Excel 365中用单公式实现父SKU库存按子SKU规则更新

Excel 365 父/子SKU库存批量计算解决方案

原使用公式=IFERROR(MAP(A2:A1301,LAMBDA(r,MIN(FILTER(B2:B1301,LEFT(A2:A1301,9)=r&":")))),B2:B1301)无法覆盖以下多场景库存计算规则,现提供可满足所有需求的单公式方案:

原始数据示例

SKUQuantity
260130041
26013004:26013004F0
26013004:26013004H0
26013004:26013004R1
260150020
31003002:31003002B1
31003002:31003002T1
310040010
310040020
31004002:31004002A32
31004002:31004002B48
310050011
31005001:31005001A3
31005001:31005001B6
310050027
31005002:31005002A5
31005002:31005002B4
310050037
31005003:31005003A8
31005003:31005003B4

需满足的库存规则

  • 父SKU库存为0,子SKU库存含0和1 → 父SKU保持0(零件不足无法组装)
  • 父SKU库存为0,子SKU库存均≥1 → 父SKU更新为子SKU库存最小值(可组装的最大数量)
  • 父SKU库存为0,子SKU库存为32和48 → 父SKU更新为32(取子库存最小值)
  • 父SKU库存为1,子SKU库存为3和6 → 父SKU更新为1+3=4(原有库存加可组装数量)
  • 父SKU库存为7,子SKU库存最大值为5 → 父SKU保持7(视为数据库差异,优先保留父库存)

最终公式(支持批量溢出)

在任意空白单元格(比如C2)输入以下公式,Excel 365会自动溢出计算所有行:

=MAP(A2:A1301,B2:B1301,LAMBDA(sku,qty,
    LET(
        parent_id, IFERROR(LEFT(sku,FIND(":",sku)-1),sku),
        child_qtys, FILTER(B:B,LEFT(A:A,FIND(":",A:A)-1)=parent_id,0),
        min_child, IFERROR(MIN(child_qtys),0),
        max_child, IFERROR(MAX(child_qtys),0),
        IF(
            ISNUMBER(FIND(":",sku)),
            qty,
            IF(
                qty>max_child,
                qty,
                qty+IF(min_child=0,0,min_child)
            )
        )
    )
))

公式逻辑说明

  1. 区分父/子SKU:通过FIND(":",sku)判断是否为子SKU,子SKU直接返回原有库存
  2. 提取父SKU关联的子库存:用FILTER筛选出当前父SKU对应的所有子SKU库存
  3. 关键判断逻辑:
    • 如果父SKU原有库存大于子SKU库存的最大值,直接保留父库存(对应规则5)
    • 如果子SKU库存最小值为0,父库存保持原有值(对应规则1)
    • 其他情况,父库存=原有库存+子SKU库存最小值(对应规则2、3、4)

内容的提问来源于stack exchange,提问作者dyz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:20:52