如何结合VLOOKUP与HLOOKUP实现库存日期调度查询?
库存调度追踪电子表格实现方案
嘿,我刚好做过类似的库存调度追踪表,给你捋个清晰的实现思路,不管是Excel还是Google Sheets都能搞定:
第一步:先搭好基础数据结构
你需要两张核心表格来支撑整个逻辑:
- 库存主表:记录库存的基础信息,比如ID、总数量、类型啥的
- 活动调度表:记录每个活动的时间范围和占用的库存情况
举个直观的例子:
库存主表
| 库存ID | 总数量 | 库存类型 |
|---|---|---|
| INV001 | 10 | 设备A |
| INV002 | 5 | 设备B |
活动调度表
| 活动名称 | 开始日期 | 结束日期 | 占用库存ID | 占用数量 |
|---|---|---|---|---|
| 活动X | 2024/5/1 | 2024/5/5 | INV001 | 3 |
| 活动Y | 2024/5/3 | 2024/5/7 | INV001 | 4 |
第二步:核心公式——计算指定日期的可用库存
假设你在单元格B2输入要查询的日期,C2输入目标库存ID,要在D2直接得出可用数量,核心逻辑是:
可用数量 = 库存总数量 - 所有与查询日期重叠的活动占用数量之和
Excel版公式
把下面的公式直接粘到D2就行,记得把表名改成你自己的:
=VLOOKUP(C2, 库存主表!A:C, 2, FALSE) - SUMIFS(活动调度表!E:E, 活动调度表!D:D, C2, 活动调度表!B:B, "<="&B2, 活动调度表!C:C, ">="&B2)
Google Sheets版公式
逻辑完全一样,直接用:
=VLOOKUP(C2, 库存主表!A:C, 2, FALSE) - SUMIFS(活动调度表!E:E, 活动调度表!D:D, C2, 活动调度表!B:B, "<="&B2, 活动调度表!C:C, ">="&B2)
公式简单解释
VLOOKUP:精准匹配你输入的库存ID,拉取对应的总数量SUMIFS:筛选出三个条件都满足的活动:和目标库存ID一致、活动开始日期不晚于查询日期、活动结束日期不早于查询日期,然后把这些活动的占用量加起来- 最后用总数量减去已占用的,就是这个日期点的可用库存啦
第三步:验证下重叠逻辑是否正确
比如查询日期选2024/5/4,库存ID选INV001:
- 总数量是10
- 活动X(5/1-5/5)和活动Y(5/3-5/7)都和5/4重叠,加起来占用7个
- 算出来可用库存就是3,完全符合“重叠时段不能重复调用”的要求
如果选2024/5/8,两个活动都结束了,占用量为0,可用库存就回到10了。
几个实用的优化小技巧
- 给库存ID列设置数据验证(下拉选择),避免手动输入错ID
- 用条件格式把可用库存小于0的单元格标红,一眼就能看到库存不够的情况
- 如果要批量查多个日期,直接把公式往下拖就行,Excel还可以用
BYROW、Google Sheets用ARRAYFORMULA做批量计算,效率更高
内容的提问来源于stack exchange,提问作者Alister M




