乐于分享
好东西不私藏

EXCEL篇-哪天会断货?自动算出缺料日

EXCEL篇-哪天会断货?自动算出缺料日
还在每天手动对着表格算累计消耗,再和库存对比?这也太累了吧!

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

一、公式思路

在K5单元格输入公式,并下拉:

=@FILTER($D$4:$J$4, SCAN(0, D5:J5, SUM) > C6, "")

① 用SCAN函数,逐日累加每日需求量(从0开始,逐个累加,得到每天的累计消耗量)

② 用累加结果与期初库存比较(累计消耗 > 期初库存,说明库存不够了)

③ 用FILTER函数,筛选出第一个"超标"的日期(即短缺日)

二、公式拆解

步骤
函数/表达式
计算结果
说明
①
SCAN(0, D5:J5, SUM)
逐日累计消耗量
从0开始,依次累加1日~7日的需求量,得到一组累计值数组
②
①> C5
一组TRUE/FALSE
将每个累计值与期初库存(C5)比较,超过的返回TRUE,否则返回FALSE
③
FILTER($D$4:$J$4, ②, "")
筛选出的日期
从日期标题行(1日~7日)中,筛选出累计消耗超标的那天
④
@③
第一个超标日期
加@取第一个结果,即最早缺料的那天

三、SCAN函数动态变化

以"钢材A3-50mm"为例,期初库存3000kg,每日需求量如下:

日期
1日
2日
3日
4日
5日
6日
7日
每日需求
450
520
480
500
550
460
510

=SCAN(0, D5:J5, SUM) 

1日
2日
3日
4日
5日
6日
7日
450
970
1450
1950
2500
2960
3470

与期初库存3000比较:

1日
2日
3日
4日
5日
6日
7日
450>500 ❌
970>500 ❌
1450>500 ❌
1950>500 ❌
2500>500 ❌
2960>500 ❌
3470>500 ✅

第7天累计消耗3470kg,首次超过期初库存3000kg,所以短缺日 =7日

四、函数语法  []内为可选填参数,剩余参数为必选项

1. SCAN(初始值, 数组, 函数)

作用:从初始值开始,对数组中的每个元素逐个执行指定函数,并返回每一步的中间结果(一个和原数组一样大的数组)

参数
参数说明
本例参数
初始值
累加的起始值
0
数组
要逐个处理的数据区域
D5:J5(每日需求量)
函数
对每个元素执行的操作
SUM(累加求和)

2. FILTER(筛选区域, 筛选条件, [无结果提示])

作用:按照你设定的条件,自动从数据中筛选出所有符合条件的值

参数
参数说明
本例参数
筛选区域
要筛选的数据区域
$D$4:$J$4(日期标题行)
筛选条件
筛选的判断条件
SCAN(0,D5:J5,SUM)>C6(累计消耗>库存)
无结果提示
无符合条件时返回的内容
""(返回空值,表示不会缺料)

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篇-输入内容自动生成表格边框,删内容边框自动消失

👉 收藏 + 在看,用的时候不迷路 

相关学习资料