网友问ALT+=搞不定的分组小计,我用AI写了个复杂公式,错了两次才对

Lv.4 核心创作者
一个用Excel十几年的用户,在WPS社区发了个帖子:小计行求和再汇总,ALT+=不好使了,一个一个输入太麻烦,有没有高手一键搞定。
这个问题看着简单,真动手写公式的时候,我发现了三个隐藏的坑。今天把整个过程拆开讲讲——我是如何用AI写出一个复杂公式的,包括AI错了两次、我修了两次的全过程。
图1:WPS社区帖子——「关于求和这个怎么快速求和」提问页,附提问者的红色小计表格截图
一、问题长什么样
提问的人是一家五金配件厂的,表格里是螺母、螺钉、垫片这些标准件的报价明细。红色数字是小计行,每隔一段就有一行空行隔开,空行上是这一组的合计。
他要的效果是:普通行算每行自己的和,空行处自动算出这一组的小计。
用传统做法,ALT+=只能加相邻区域,碰到不规则空行分组就废了。手动一个个输SUM,几十个分组能输到眼花。
我拿一个简化模型复现了这个场景:数据1、数据2两列,12行数据,第7行和第13行是空行。期望结果是——普通行35或45,空行处分别出175和225。
图2:空行求和.xlsx——D2公式栏与D列结果,第7行175、第13行225两组小计高亮
二、第一版公式:AI翻车了
我把需求丢给灵犀,它很快给了一版公式:
=LET(d,B2:.C13,b,TAKE(d,,1),s,BYROW(d,SUM),
cum,SCAN(0,s,LAMBDA(a,v,a+v)),
base,SCAN(0,SEQUENCE(ROWS(d)),LAMBDA(a,i,IF(INDEX(b,i)=""",INDEX(cum,i),a))),
IF(b="",cum-base,s))思路是对的:BYROW逐行求和,SCAN做累计,空行处用「累计减组起点」算小计。逻辑我检查了一遍,没毛病。
写入表格,结果第7行、第13行全是0,而且溢出只有11行,最后一行直接没了。
图3:灵犀对话截图——第一版公式写入后D7=0、D13为空的调试现场
三、两个藏在细节里的坑
排查的过程,其实就是把公式拆成零件,一个一个单独测试。
坑一:区域语法糖会裁掉末尾空行。
B2:.C13这种写法,看着是B2到C13,实际上它像TrimRange一样,会把末尾的空行自动裁掉。B13是空的,所以整个区域只剩11行,第13行的小计自然没地方算。
解法:这种情况必须用显式范围B2:C13,别贪语法糖。
坑二:数组里空单元格是0,不是空文本。
公式里用b=""判断空行,测试全不命中。在数组上下文里,空单元格返回的是0,判断得写b=0。
修完这两个,第7行出结果了,但值还是不对——0。
为什么?我把base这个SCAN拆出来单测,发现它在边界行「当行」就把组起点更新成了自己的累计值,cum-base等于自己减自己,永远是0。
解法:再造一个滞后一行的变量p,取「上一个空行处」的累计值,小计=当前累计−上一个边界的累计。
图4:灵犀对话截图——分步调试辅助列,cum、base、p三个中间变量逐列验证
四、最终公式
三个坑全填上之后,D2一格录入,12行全部溢出,和期望值逐行一致:
=LET(d,B2:C13,b,TAKE(d,,1),s,BYROW(d,SUM),
cum,SCAN(0,s,LAMBDA(a,v,a+v)),
J,SCAN(0,SEQUENCE(ROWS(d)),LAMBDA(a,i,IF(INDEX(b,i)=0,INDEX(cum,i),a))),
p,SCAN(0,SEQUENCE(ROWS(d)),LAMBDA(a,i,IF(i=1,0,INDEX(J,i-1)))),
IF(b=0,cum-p,s))公式解释:
d:数据区域,两列12行
s:BYROW逐行求和,普通行直接用
cum:SCAN累计和,算到每一行为止的总和
J:记住每个空行处的累计值,作为组边界
p:把J滞后一行,取到「上一个空行」的累计
IF(b=0,cum-p,s):空行输出小计,普通行输出本行和
图5:灵犀对话截图——验证通过的对比表,D列结果与期望175/225逐行打勾
我把这个公式回了帖子,一楼就是完整的LET版本。那位老哥用的WPS正好支持动态数组,复制进去改个区域就能用。
五、最后说一句
这单给我的触动不是公式本身,而是AI写公式的正确姿势。
AI第一版就给出了正确的思路框架——累计减组起点,这个设计我自己想也得琢磨一阵。但它在两个执行细节上栽了跟头:语法糖的隐藏行为、数组里空值的真实形态。
说白了,AI负责搭骨架,人负责验收。你不需要会写SCAN嵌套LAMBDA,但你得会做一件事:拿小数据集逐行核对结果。175和225这两个数,就是人和AI分工的最好注脚——AI三分钟给出方案,我十分钟填上它看不见的坑。
公式可以复杂,验收必须简单。这是用AI写公式这两年,我总结出的最重要一条。
古老师(古哥计划)|中小制造数字化专家|金山 KVP(金山办公最有价值专家)|金山多维表格应用场景专家|金山 WPS 社区优秀创作者
深耕中小制造业数字化落地,擅长用 WPS 多维表格 + AI 低代码方案,帮工厂快速搭建进销存、生产计划、质量追溯等轻量化系统。不用复杂 IT,低成本落地,已服务数百家制造企业,实战经验丰富。
#多维表格 #工厂管理 #AI应用
本文由 AI 辅助创作
工具:AI 灵犀专业版
模式:Pro 模式(智能判断模型)
术语解释
文章里出现的技术名词,一句话说清楚:
动态数组
公式写在一格,结果自动「溢出」填满整列,不用下拉填充。就像倒一杯水自己铺满整个杯子。
LET
给公式里的中间结果起名字,先算好存起来,后面反复用。好比先把材料切好配好,炒的时候直接抓。
BYROW
对区域里每一行分别执行同一个计算。相当于流水线上每一件产品都过一遍同一道工序。
SCAN
带着上一步的结果算下一步,像滚雪球一样逐步累计。
LAMBDA
自己造一个临时小函数,现写现用。
区域语法糖(B2:.C13)
简化区域写法,会自动裁掉末尾的空行空列。省字,但有空行数据时会"吃掉"你的边界行。