场景:如下图,填入各物料每日需求量,"短缺日",“缺料数量”自动算出

一、公式思路
在K5单元格输入公式,并下拉:
=@FILTER($D$4:$J$4, SCAN(0, D5:J5, SUM) > C6, "") |
① 用SCAN函数,逐日累加每日需求量(从0开始,逐个累加,得到每天的累计消耗量)
② 用累加结果与期初库存比较(累计消耗 > 期初库存,说明库存不够了)
③ 用FILTER函数,筛选出第一个"超标"的日期(即短缺日)
二、公式拆解
三、SCAN函数动态变化
以"钢材A3-50mm"为例,期初库存3000kg,每日需求量如下:
=SCAN(0, D5:J5, SUM)
与期初库存3000比较:
第7天累计消耗3470kg,首次超过期初库存3000kg,所以短缺日 =7日
四、函数语法 []内为可选填参数,剩余参数为必选项
1. SCAN(初始值, 数组, 函数)
作用:从初始值开始,对数组中的每个元素逐个执行指定函数,并返回每一步的中间结果(一个和原数组一样大的数组)
2. FILTER(筛选区域, 筛选条件, [无结果提示])
作用:按照你设定的条件,自动从数据中筛选出所有符合条件的值
3. @符号
作用:当FILTER筛选出多个结果时,加@只取第一个值(即最早缺料的那天)。如果库存充足,不会缺料,FILTER返回空值,单元格显示为空
五、短缺数量怎么算?
如果还想算出短缺了多少,可以在L5单元格输入公式:
IF(K5="","",SUM(D5:INDEX(D5:J5,MATCH(K5,$D$4:$J$4,0)))-C5) |
当K列不为空的时候,用SUM动态求和,详细可参考下面文章,当K列为空的时候,返回空值。
EXCEL篇-告别手动拖选!一个Excel公式搞定任意月份区间求和
六、自动填充颜色如何设置?
通过条件格式设置颜色自动变化,具体可见文章EXCEL篇-输入内容自动生成表格边框,删内容边框自动消失

夜雨聆风