如何通过Excel公式实现按仓库-商品-日期组合填充24小时库存及在库率数据?
解决Excel库存小时数据补全的两种简便方案
嘿,这个场景我太熟悉了——处理时间序列的库存快照补全,用Excel的公式或者Power Query都能轻松搞定,针对你的大型数据集,我更推荐Power Query(效率更高),不过先给你两种方案,按需选择:
一、公式方案(适合中小数据集)
步骤1:生成24小时基础表
首先你需要先构建一个包含所有仓库-商品-日期组合+0-23小时的基础表格:
- 把原始数据里的唯一仓库-商品-日期组合提取出来(可以用数据透视表的行区域选这三列,然后复制结果)
- 给每个组合复制24行,然后在「快照小时」列填充0到23的序列(用
=SEQUENCE(24,1,0)快速生成)
步骤2:填充库存数量和在库率
假设原始数据在Sheet1,列对应:A=仓库、B=商品、C=日期、D=快照小时、E=库存数量、F=在库率;基础表在Sheet2,对应列A=仓库、B=商品、C=日期、D=快照小时。
在Sheet2的E2(库存数量)输入公式:
=IFERROR(XLOOKUP(1,(Sheet1!A:A=A2)*(Sheet1!B:B=B2)*(Sheet1!C:C=C2),Sheet1!E:E),0)
在Sheet2的F2(在库率)输入公式:
=IFERROR(XLOOKUP(1,(Sheet1!A:A=A2)*(Sheet1!B:B=B2)*(Sheet1!C:C=C2),Sheet1!F:F),0)
然后下拉填充所有行即可。
逻辑说明:
XLOOKUP会匹配当前仓库-商品-日期的第一条有效数据,把对应的库存/在库率复制到该组合的所有24小时行- 如果该组合完全没有数据,
IFERROR会返回0,符合你默认缺货的要求
二、Power Query方案(适合大型数据集,自动生成+补全)
如果你的数据量很大,手动生成基础表太麻烦,用Power Query可以一键完成所有步骤:
步骤1:导入数据到Power Query
选中原始数据区域,点击「数据」选项卡 → 「从表格/区域」(勾选「我的表格有标题」),进入Power Query编辑器。
步骤2:按仓库-商品-日期分组
点击「转换」选项卡 → 「分组依据」:
- 分组列:选择「仓库」「商品」「日期」
- 新列名:输入
明细 - 操作:选择「所有行」
- 点击确定,你会看到每个组合对应一行,包含该组合的所有原始数据行。
步骤3:生成24小时序列
添加自定义列:点击「添加列」→ 「自定义列」,输入公式:
{0..23}
命名为「快照小时」,然后点击该列右侧的展开按钮,选择「展开到新行」。
步骤4:填充库存和在库率
再添加两个自定义列:
- 库存数量:
= if Table.IsEmpty([明细]) then 0 else [明细][库存数量]{0}
- 在库率:
= if Table.IsEmpty([明细]) then 0 else [明细][在库率]{0}
步骤5:清理并加载数据
删除「明细」列,然后点击「主页」→ 「关闭并上载」,Excel会自动生成一个新表,包含所有仓库-商品-日期的24小时补全数据。
逻辑说明:
- 自动遍历所有组合,生成24小时行
- 有数据的组合直接取第一条数据的库存/在库率填充所有小时
- 无数据的组合自动填充0,完全符合你的需求
内容的提问来源于stack exchange,提问作者Mackenzie Brigham




