按仓库及Style优先级标记库存阶段(Bin/Putaway)需求
按虚拟仓库+款号批量标记库存状态的解决方案
核心逻辑回顾
按「Virtual warehouse(虚拟仓库)+ Style(款号)」分组:
- 若组内任意一行的Stage为"Bin",则组内所有行新列标记为"Bin"
- 若组内无任何一行Stage为"Bin",则标记为"Putaway"
方法1:Excel公式实现
适用于Excel 365/2021及以上(动态数组支持)
直接在新列第一行输入公式,自动填充所有行:
=BYROW(A2:C10, LAMBDA(row, IF(COUNTIFS(A:A, INDEX(row,1), B:B, INDEX(row,2), C:C, "Bin")>0, "Bin", "Putaway")))
替换A2:C10为你的实际数据区域即可。
适用于旧版Excel(无动态数组)
输入数组公式后按Ctrl+Shift+Enter,再下拉填充:
=IF(SUMPRODUCT(($A$2:$A$10=A2)*($B$2:$B$10=B2)*($C$2:$C$10="Bin"))>0, "Bin", "Putaway")
方法2:Power Query实现(大数据量首选)
如果数据量较大,用Power Query效率更高:
- 选中数据区域,点击「数据」选项卡→「从表格/区域」导入Power Query
- 点击「转换」选项卡→「分组依据」:
- 分组列:勾选
Virtual warehouse和Style - 新列名:输入
HasBin,操作选「行计数」,筛选条件设为[Stage] = "Bin"
- 分组列:勾选
- 点击「主页」→「合并查询」→「合并为新查询」,选择原表和分组后的表,匹配列选
Virtual warehouse和Style - 展开合并后的列,只保留
HasBin字段 - 添加自定义列:
if [HasBin] > 0 then "Bin" else "Putaway" - 删除多余列,点击「关闭并上载」将结果导回Excel
方法3:SQL实现(数据在数据库中时)
假设表名为inventory,字段对应virtual_warehouse、style、stage,用窗口函数快速标记:
SELECT virtual_warehouse, style, stage, CASE WHEN MAX(CASE WHEN stage = 'Bin' THEN 1 ELSE 0 END) OVER (PARTITION BY virtual_warehouse, style) = 1 THEN 'Bin' ELSE 'Putaway' END AS inventory_status FROM inventory;
内容的提问来源于stack exchange,提问作者Nooh_Noah
相关产品推荐
相关产品推荐

