ARTICLE · 1324720
wps表格两个reduce函数和lambda组合使用举
wps表格两个reduce函数和lambda组合使用举
前阵子折腾 WPS 表格,遇到个挺绕的活儿:要从一列带分隔符的文本里,把数字全抠出来。
本来想用 REDUCE 加 LAMBDA。这俩函数通常结对出现——REDUCE 管循环和累积结果,LAMBDA 定每一步怎么算。
先看单个 REDUCE 怎么跑。比如算 A2:A5 的立方和:
=REDUCE(0, A2:A5, LAMBDA(x, y, x + y^3))
x 是累积值,从 0 起;y 是当前单元格。每走一格,就把 y 的立方加到 x 上,最后吐出总和。
可现在要处理多行嵌套数据,一个不够用了。真正绕的是两个 REDUCE 套一块:
=DROP(REDUCE("", A2:A7, LAMBDA(x, y, VSTACK(x, IFNA(HSTACK(y, REDUCE(, REGEXP(TEXTSPLIT(OFFSET(y,,1),,"、"), "[0-9.-]+", 3), VSTACK)), y))), 1)
外层 REDUCE 管“行”。它拿空文本起步,逐行遍历 A2:A7,每拿到一行结果就往下堆。
内层 REDUCE 管“列”。外层走到某一行时它就开工,把旁边那列文本按“、”拆开,再用正则提取所有数字,竖着堆成一列。
最后 HSTACK 把行标识和数字拼一起,DROP 删掉最上面那行空白,整表就成了。
说白了,外层负责收集组装,内层负责拆解转换。LAMBDA 只是让每一步的计算规则能随便自定义。
原文wps表格两个reduce函数和lambda组合使用举例说明
江西,1小时前,















































































