欠料公式让AI写:4种思路全部秒出,还顺手告诉我10万行谁最快

Lv.4 核心创作者
生产计划里有一个躲不掉的场景:欠料判断。
库存200,第一天需求1000,欠多少?800。第二天需求1200呢?第三天没排产呢?手工算一天两天行,产品一多、日期一长,天天算就是灾难。
今天的做法是:让AI写。而且不是写一种,是写四种,全部云端实测跑通,还顺便回答了我一个问题——10万行数据,谁的速度最快。
一、场景:库存200,需求1000,欠多少
A列到E列是产品需求表,产品A四天需求1000/1200/0/1000。库存表里A产品200,D产品1400。
要的答案在右边:A产品四天的欠料矩阵。
第一天:库存200,需求1000,欠800
第二天:需求1200,累计缺口更大,但当天只欠1200
第三天:没排产,不欠
第四天:又欠1000
关键是它是动态的:库存从200改成3500,右边全部跟着变;需求从0改成600,欠料也立刻变成-600。一个公式,整片区域自动刷新。
二、方法1:MMULT上三角,向量化一步出全表
=LET(u,TRANSPOSE(SEQUENCE(4)),tri,--(SEQUENCE(4)<=u),b,B2:E5,st,XLOOKUP(A2:A5,G2:G5,H2:H5,0),p,st-MMULT(b,tri),HSTACK(A2:A5,IF(p>0,0,IF(p<-b,-b,p))))拆开看就四步:
SEQUENCE(4)<=u 生成一个上三角0/1矩阵
MMULT(b,tri) 需求矩阵右乘上三角,一次算出每行到每天的累计需求
库存用XLOOKUP广播,p=库存-累计需求
三态判断收尾:不缺归0、欠则封顶当日需求
全程没有循环,这就是向量化的威力,也是它速度快的根本原因。
三、AI把另外三种也写了
这是我最想给你看的一张表——公式汇总。AI把每个方法的公式、精简思路、详细思路、推荐指数、功能限制全部写好了,按速度排序,带超链接直接跳转。
方法2,REDUCE按产品遍历(162字符):
=LET(g,A2:A5,HSTACK(g,DROP(REDUCE("",g,LAMBDA(X,Y,VSTACK(X,LET(a,Y,b,OFFSET(a,,1,,4),p,XLOOKUP(a,G2:G5,H2:H5,0)-SCAN(0,b,SUM),IF(p>0,0,IF(ABS(p)<b,p,-b)))))),1)))逐产品压栈,SCAN做需求累计,思路最接近PMC手工账。
方法3,REDUCE按日期推进(236字符):
视角反过来:不按产品遍历,按日期列推进。每天看库存还剩多少,余额滚动,最贴近仓管员的账本直觉。
方法4,TOCOL长表压缩重组(253字符):
把二维需求压平成16行长表,SCAN累计后用XLOOKUP反查段首值,从累计口径反解出单日欠料,再WRAPCOLS折回二维。
四个方法,四个家族:矩阵映射、递推遍历、流式推进、压缩重组。思路不同才算新方法,这是我和AI约定的方法计数规则。
四、和AI讨论:MAX能不能替IF?
写完我不是直接收货,而是追问。欠料三态判断里IF出现了两层,我就问:能不能用MAX/MIN写?
AI验证的结论很有意思:
非动态数组场景:可以。-MIN(MAX(-p,0),b) 这个数学单式完全成立
动态数组场景:失效。WPS的MAX/MIN对数组是聚合,MAX(-p,0)返回的是整个数组最大值的一个标量,不是逐元素比较——公式不报错,结果静默全错
数组层硬要用MAX,只有ABS恒等式绕路,字符更长、可读性更差。所以结论:云端动态数组统一用 IF(p>0,0,IF(p<-b,-b,p)),比ABS版还少一步。
这个坑不追问永远不会知道,因为静默错误不报错。
五、10万行谁最快?
讨论到最后,我问了最关键的问题:10万行数据,哪个方法最快?
AI的推算结论:
MMULT上三角(方法1)大概率第一:O(16n),零LAMBDA零循环
REDUCE按日期推进(方法3)次选:LAMBDA只调用天数次
带堆叠(VSTACK逐行压栈)的直接出局:10万行堆叠会产生千万级行的运算量,直接卡死
要不要实测?AI说用Python写个压测脚本就行,这个后面专门出一篇。
六、越训练越快:方法论的沉淀
这套东西不是我今天聪明,是训练出来的。
表头格式、填充色、边框、目录超链接,全部是AI写的。我做的只有三件事:说场景、看结果、追问。
踩过的坑——MAX/MIN聚合、REDUCE展平、T()不是转置——全部沉淀进了AI的项目记忆和技能库。下次我只要说出触发词:欠料、合并单元格、不规则合并,AI直接按沉淀好的方法论秒出,不用从头试错。
今天用的模型是GLM-5.3 Flash,0.11倍价格,写这种复杂度绰绰有余。
最后说一句
PMC学欠料判断,重点已经不是背公式了。公式AI几秒写完,还带速度评测和功能限制。你要练的是把场景说清楚、把结果验明白、把追问问到底。
多训练,多追问,你的AI才会越来越懂你的表格。
术语解释
文章里出现的技术名词,一句话说清楚:
动态数组:一个公式自动向下向右溢出整片结果的写法,改一个数全表跟着变。
向量化:整列整块数据一次运算搞定,不逐格循环,速度是循环写法的几十倍。
MMULT:矩阵乘法函数,Excel/WPS里做"需求矩阵×上三角"这种整块运算用它最快。
REDUCE:循环遍历函数,像流水线一样把每个元素依次喂给一段逻辑,最后压成一个结果。
SCAN:累计器,把一列数依次累加,比如把每天需求滚成"到本日为止的累计需求"。
XLOOKUP:查找函数,拿着产品名去库存表里找对应数量,找不到可指定兜底值。
OFFSET:以某个单元格为基准偏移取区域,写法灵活但拖慢全表重算。
O(16n):复杂度记号,数据量翻倍时间跟着翻倍左右;对比O(n²)那种平方级增长,大数据下差距是秒和天的区别。
古老师(古哥计划)|中小制造数字化专家|金山 KVP(金山办公最有价值专家)|金山多维表格应用场景专家|金山 WPS 社区优秀创作者
深耕中小制造业数字化落地,擅长用 WPS 多维表格 + AI 低代码方案,帮工厂快速搭建进销存、生产计划、质量追溯等轻量化系统。不用复杂 IT,低成本落地,已服务数百家制造企业,实战经验丰富。
#多维表格 #工厂管理 #AI应用
#AI创作声明