🔥WPS 递归 | 分段求和:自动识别需要求和范围及重置求和结果一键生成!!!全解析

今天完整拆解递归公式、三层判断逻辑、递归调用 + 函数式过程演示,全程用公式原函数语句讲解,新手也能一眼看懂递归走向。

📌 案例背景

数据源:B5:B25

数据规律:数字与空白单元格交错分布,空白作为分段分隔符

需求:自动识别每一段连续非空数据,分别求和,结果纵向全部溢出展示

最终结果:23、6、49、15、40、38

🧩 完整公式源码

excel

=LET(TT,LAMBDA(a,b,

IF(ROWS(a)=COUNTA(a),SUM(a),

IF(TAKE(a,1)="",TT(DROP(a,1),1),

IF(INDEX(a,b+1)="",VSTACK(SUM(TAKE(a,b)),TT(DROP(a,b),1)),

TT(a,b+1))))),

TT(B5:B25,1))

逻辑图共理解。

🧩 三层判断逻辑

我把三层 IF 全部翻译成大白话,每个函数作用一次讲清:

  1. 第一层 IF(终极终止条件)IF(ROWS(a)=COUNTA(a),SUM(a),...)当前剩余数组没有空白单元格了,直接全部求和,递归彻底停止。

  1. 第二层 IF(跳过段首空白)IF(TAKE(a,1)="",TT(DROP(a,1),1),...)当前数据开头是空白,砍掉空白行,剩余数据重新递归。

  1. 第三层 IF(分段边界判断 + 回溯核心)IF(INDEX(a,b+1)="",VSTACK(SUM(TAKE(a,b)),TT(DROP(a,b),1)),TT(a,b+1))

  • 下一行是空:本段数据全部求和 + 剩余数据继续递归,结果堆叠

  • 下一行非空:指针 + 1,继续向后探测数据边界

📝 递归调用全过程

全程使用原函数参数、原函数写法展示每一步调用、判断、执行、回溯,步骤精简,无多余文字,新手顺着函数就能看懂。初始调用:TT(B5:B25, 1)

第 1 层

TT(完整数组, b=1)

  1. ROWS(a)≠COUNTA(a) 不满足终止

  1. TAKE(a,1)≠"" 首行非空,不跳过空白

  1. INDEX(a,2)≠"" 下一行非空

执行:TT(a, b+1) → 指针后移

第 2 层

TT(完整数组, b=2)

  1. ROWS(a)≠COUNTA(a) 不满足终止

  1. TAKE(a,1)≠"" 首行非空

  1. INDEX(a,3)="" 下一行空白,到达分段边界

执行回溯:

VSTACK(SUM(TAKE(a,2)), TT(DROP(a,2), 1))

本段求和结果:23

剩余数据进入下一轮递归

第 3 层

TT(剩余数组, b=1)

  1. ROWS(a)≠COUNTA(a)

  1. TAKE(a,1)="" 首行空白

执行:TT(DROP(a,1), 1) 砍掉空白,重新递归

第 4 层

TT(新剩余数组, b=1)

  1. ROWS(a)≠COUNTA(a)

  1. TAKE(a,1)≠""

  1. INDEX(a,2)="" 下一行空白

执行回溯:

VSTACK(SUM(TAKE(a,1)), TT(DROP(a,1), 1))

本段求和结果:6

剩余数据继续递归

第 5 层

TT(剩余数组, b=1)首行空白,执行 TT(DROP(a,1),1) 剔除空白重新递归

第 6 层

TT(连续数字数组, b=1)

  1. 不满足终止,首行非空

  1. INDEX(a,2)≠"" 下一行非空

执行:TT(a,b+1) 指针后移

第 7 层

TT(连续数字数组, b=2)INDEX(a,3)≠"" 依旧非空执行:TT(a,b+1) 指针继续后移

第 8 层

TT(连续数字数组, b=3)INDEX(a,4)="" 到达分段边界执行回溯:VSTACK(SUM(TAKE(a,3)), TT(DROP(a,3), 1))本段求和结果:49剩余数据继续递归

后续段落全部重复上述统一递归逻辑:遇到段首空白 → TT(DROP(a,1),1) 剔除空白递归数据连续无边界 → TT(a,b+1) 指针步进遇到尾部空白边界 → VSTACK(SUM(TAKE(a,b)),TT(DROP(a,b),1)) 求和 + 剩余递归

最后一层(终极终止)

TT(末尾剩余数组, b=1)ROWS(a)=COUNTA(a) 剩余数据无空白直接执行:SUM(a)最终求和结果:38

⚖️ 公式亮点总结

  1. 全程原生动态数组溢出,仅需一个单元格输入公式,全部结果自动生成,无需下拉

  1. 多空白、连续空白、首尾空白全部兼容,分段识别稳定

  1. 递归结构闭环:终止条件→空白跳过→边界探测→求和回溯

  1. LET+LAMBDA 全原生函数,WPS、365Excel 通用

💡 递归底层小结

所有递归万变不离其宗:探测边界 → 处理当前段 → 剩余数据自身递归 → 结果堆叠每一步都用函数自身调用完成遍历,不用任何辅助单元格。

📢 结尾互动

做财务分段汇总、杂乱数据整理的朋友,公式直接套用,修改数据源区域即可使用。还想要更多 LAMBDA 递归实战案例,评论区留言!

投票递归在WPS中是否有用?(2选1)
  • 有用 2
  • 没用 0
2人参与 截止时间:2026/04/30 02:53:55
浙江省
浏览 24
收藏
2
分享
2 +1
+1
全部评论