库存够不够,AI一口气写了7种欠料公式,最快的94个字符

Lv.4 核心创作者
做计划的人,谁没被这种表折磨过:左边一张产品×日期的需求二维表,右边一小块库存,领导问一句"这
四天哪些产品会欠料?欠多少?"
手算要一天一遍一遍扣,Excel里拉辅助列拉到怀疑人生。需求一变,全部重来。
我让AI来干。它一口气写了7种解法,最快的一个94个字符,还自己给每种打法打了速度分。
一、场景定义
原始数据长这样:一张需求二维表,产品A~D每天的需求量;旁边一张库存表,A有200,D有1400。
要的东西很简单:每个产品,每天还剩多少?负数就是欠料。
这个场景放哪个行业都成立:
电子厂:物料欠料,停工等料一天损失几万
食品厂:原料日耗,备多了过期备少了断货
电商:库存扣减,超卖一个赔三倍
共同骨架一句话:库存 − 截至当天的累计需求 = 结余。
二、方法1:MMULT矩阵上三角(94字符,速度95分)
AI的思路很刁:不逐天循环,用列号生成一个上三角0/1矩阵,矩阵乘法一次把四天的累计需求全算出来,库存广播相减,完事。
公式:矩阵一次算累计
=LET(a,A2:A5,n,COLUMN(A:D),HSTACK(a,XLOOKUP(a,G2:G3,H2:H3,0)-MMULT(B2:E5,--(n>=TRANSPOSE(n)))))n,COLUMN(A:D)
:列号1~4,同一个表达式用两次,按铁则提进LET
n>=TRANSPOSE(n)
:4×4上三角,真=1假=0,双负号转数值
MMULT(B2:E5,上三角)
:一步算出每行前c天的累计需求
XLOOKUP(a,G2:G3,H2:H3,0)
:库存广播,没有库存按0
相减得结余,负数即欠料
这个打法零LAMBDA零循环,10万行数据毫秒级。字符数从101压到94,就是靠LET把重复的列号提出来——又快又短,速度榜第一。
三、方法2:REDUCE横向递推(145字符,速度90分)
第二种是递推思路:以库存列当初值,循环天数列,每轮把"上一轮结果−当天需求"追加到右边,像滚雪球一样横向长出四列结余。
公式:库存当初始值滚动
=LET(a,A2:A5,s,XLOOKUP(a,G2:G3,H2:H3,0),HSTACK(a,DROP(REDUCE(s,SEQUENCE(,COLUMNS(B2:E5)),LAMBDA(x,c,HSTACK(x,TAKE(x,,-1)-INDEX(B2:E5,,c)))),,1)))s
:XLOOKUP把库存按产品广播成4×1初始列
REDUCE(s,天数序列,...)
:循环4次,每次横向追加一列
TAKE(x,,-1)-INDEX(B2:E5,,c)
:上一轮末列减当天需求列
DROP(...,,1)
:掐掉初始库存列,只留结余
LAMBDA只调用天数次(4天就4次),10万行数据照样快,速度榜第二实至名归。
四、方法3:先累计再减(135字符,速度76分)
第三种换了条路:逐产品先算累计需求,再拿库存一次性减。SCAN里套内置的SUM求和,比LAMBDA自己相减快一截。
公式:先滚累计,一次相减
=LET(A,A2:A5,TAKE(HSTACK(A,XLOOKUP(A,G2:G3,H2:H3,0)-DROP(REDUCE("",A,LAMBDA(X,Y,VSTACK(X,SCAN(0,OFFSET(Y,,1,,4),SUM)))),1)),COUNTA(A)))REDUCE("",A,...)
:逐产品压栈,VSTACK拼行
SCAN(0,需求行,SUM)
:从0起逐天累计,SUM是内置函数,解释成本低
XLOOKUP - 累计矩阵
:库存广播减累计
TAKE(...,COUNTA(A))
:掐头去尾取干净
五、方法4:滚动递减(129字符,速度74分)
第四种跟方法3是亲兄弟:SCAN不从0起,直接拿库存当起点,逐日做减法——x-y滚下去,减完就是结余,连"库存减累计"那步都省了。
公式:库存起头逐日扣
=LET(a,A2:A5,HSTACK(a,DROP(REDUCE("",a,LAMBDA(X,Y,VSTACK(X,SCAN(XLOOKUP(Y,G2:G3,H2:H3,0),OFFSET(Y,,1,,4),LAMBDA(x,y,x-y))))),1)))XLOOKUP(Y,...)
:当前产品的库存做SCAN初值
SCAN(初值,需求行,x-y)
:逐日滚动递减,减到哪算哪
VSTACK
逐产品拼行,DROP掐掉占位行
六、方法5:TOCOL压平折回(195字符,速度60分)
第五种是降维打击:把二维需求压平成一列,一维算累计,算完再折回二维。
公式:压平→累计→折回
=LET(a,A2:A5,q,TOCOL(B2:E5),n,COLUMNS(B2:E5),HSTACK(a,WRAPROWS(XLOOKUP(TOCOL(IF(SEQUENCE(,n),a)),G2:G3,H2:H3,0)-SCAN(0,SEQUENCE(ROWS(q)),LAMBDA(x,i,IF(MOD(i-1,n)=0,INDEX(q,i),x+INDEX(q,i)))),n)))TOCOL(B2:E5)
:16个需求压平成一列
SCAN+MOD分组
:序号对天数取余,余1时重置累计——每4个一组重新起头
WRAPROWS(...,n)
:一维结果按宽度4折回二维
七、方法6:MAKEARRAY逐格算(134字符,速度40分)
第六种最直觉:造一个4×4的数组,每个格子独立算"库存−前c天累计"。
公式:按坐标逐格独立计算
=LET(a,A2:A5,q,B2:E5,HSTACK(a,MAKEARRAY(COUNTA(a),COLUMNS(q),LAMBDA(r,c,XLOOKUP(INDEX(a,r),G2:G3,H2:H3,0)-SUM(OFFSET(q,r-1,0,1,c))))))MAKEARRAY(行,列,LAMBDA(r,c,...))
:按坐标逐格生成
SUM(OFFSET(q,r-1,0,1,c))
:取该行前c天求累计
八、方法7:FILTER条件取数(257字符,速度20分)
第七种最啰嗦但有个独门绝活:四列全部一维化(产品、需求、库存、累计),FILTER按产品条件取数,算完折回。
公式:一维化+条件筛选折回
=LET(p,TOCOL(IF(SEQUENCE(,4),A2:A5)),q,TOCOL(B2:E5),s,XLOOKUP(p,G2:G3,H2:H3,0),c,SCAN(0,SEQUENCE(ROWS(q)),LAMBDA(x,i,IF(MOD(i-1,4)=0,INDEX(q,i),x+INDEX(q,i)))),HSTACK(UNIQUE(p),TRANSPOSE(DROP(REDUCE("",UNIQUE(p),LAMBDA(X,Y,HSTACK(X,FILTER(s-c,p=Y)))),,1))))源表产品顺序乱了它也不怕,乱序鲁棒是唯一亮点
代价:每个产品都要扫一遍全表,O(n²),10万行是分钟级灾难
九、方法对比排名
AI给7种打法打了速度分(算量实证,满分100):
排名 | 方法 | 长度 | 速度分 | 精简思路 |
1 | 方法1 MMULT | 94 | 95 | 上三角矩阵一次算累计 |
2 | 方法2 REDUCE横向 | 145 | 90 | 库存当初值滚动追加 |
3 | 方法3 先累计再减 | 135 | 76 | SCAN累计一次相减 |
4 | 方法4 滚动递减 | 129 | 74 | 库存起头逐日扣 |
5 | 方法5 TOCOL折回 | 195 | 60 | 压平累计再折回 |
6 | 方法6 MAKEARRAY | 134 | 40 | 逐格独立计算 |
7 | 方法7 FILTER | 257 | 20 | 条件取数乱序鲁棒 |
短的方法未必快,快的方法未必短。按数据脾气选:
十、避坑清单
都是这次实测踩出来的:
TAKE的第三个参数在WPS云端失效
,TAKE(a,,6)返回的是第1列,取指定列老老实实用INDEX
PIVOTBY在云端ET直接罢工
,标准区域引用也报#VALUE!,别指望
GROUPBY多列逐列聚合结果错
,聚合函数吐数组直接#VALUE!;BYROW吐数组#CALC!——聚合三兄弟全灭
XLOOKUP查找值是二维数组时只返回首列
,老坑,两次实测都踩
FILTER+HSTACK拼列会转置错位
,拼完记得TRANSPOSE折回
3D引用按工作表物理顺序取数
,表顺序一乱就丢表,显式一张张引用最稳
同一表达式用两次就进LET
,不只是可读性,还能顺手压缩字符
最后说一句
以前算四天欠料,手扣十分钟还不敢保证对;现在一句自然语言,7种解法带速度榜,还自动建好目录、超链接、档案区。
这个「AI写表格公式」项目,每天一个PMC高频场景,连更7天,最后把所有打法封装成技能。今天的是第5个场景。
想要7种公式的完整清单,评论区扣「公式」。
术语解释
文章里的技术名词,一句话说清楚:
LET:给公式里反复使用的东西起个短名字,公式更短更好读。
动态数组:一个公式直接吐出一片结果,不用下拉填充。
MMULT(矩阵乘法):两张数字表格按行列规则相乘,一次算出一整片结果。
LAMBDA:写在公式里的自定义小函数,把一段计算逻辑打包反复调用。
REDUCE:带"累加器"的循环,每轮把上轮结果传进下轮,像滚雪球。
SCAN:跟REDUCE像兄弟,区别是每轮结果都留下,适合算"累计到某天"。
易失函数:OFFSET这类函数,表格任何改动都会触发它重算,数据一大就拖慢全表。
上三角矩阵:左下方全是0、右上方才有值的方阵,这里用来实现"累计到第几天"。
古老师(古哥计划)|中小制造数字化专家|金山 KVP(金山办公最有价值专家)|金山多维表格应用场景专家|金山 WPS 社区优秀创作者
深耕中小制造业数字化落地,擅长用 WPS 多维表格 + AI 低代码方案,帮工厂快速搭建进销存、生产计划、质量追溯等轻量化系统。不用复杂 IT,低成本落地,已服务数百家制造企业,实战经验丰富。
#AI写表格公式 #动态数组 #WPS表格 #PMC #欠料分析
本文由 AI 辅助创作
工具:灵犀专业版
模型:GLM-5.3-Flash 超高
Lv.4 核心创作者
Lv.4 核心创作者
Lv.4 核心创作者
Lv.2 潜力创作者
Lv.4 核心创作者
Lv.4 核心创作者