乐于分享
好东西不私藏

WPS表格新函数 REDUCE 到底怎么用?看完这个案例你就懂了

WPS表格新函数 REDUCE 到底怎么用?看完这个案例你就懂了

大家好,我是墨云轩。今天跟大家分享一个WPS表格里的新函数——REDUCE。

说起这个函数,还有个小故事。前阵子有网友在社区问,怎么在表格里把字符串反转过来,比如”asdf”变成”fdsa”。我当时分享了三种方法,其中一种就用到了REDUCE。后来发现,这个函数其实能做的事情远不止反转字符串,所以今天专门写一篇,好好聊聊它。

说实话,REDUCE刚出来的时候,我看着也头疼。LAMBDA、累积值、迭代……光这些词就把人绕晕了。但慢慢摸索下来,发现它其实就是”一个一个算,把上一步的结果带到下一步”。弄懂这个思路,就不难了。

跟社区里的大佬比,我对这个函数的理解还很浅,但都是自己一步步摸索出来的,分享给大家,希望能帮到刚接触的朋友。


REDUCE是干什么的?

一句话说清楚:REDUCE就是把一组数据从头到尾过一遍,每一步都用上一步的结果继续算,最后只给你一个最终结果。

打个比方,就像你去超市买东西,推着购物车一个货架一个货架地走。每拿起一件商品,就把它放进车里,车里的东西越来越多。等逛完所有货架,你只关心最终车里装了什么——这就是REDUCE干的事。

它和SUM、MAX这些函数不太一样。SUM只管加,MAX只管找最大值,但REDUCE可以让你自己定义”每一步怎么算”,灵活得多。


函数语法

先看语法,别怕,咱们一个参数一个参数拆开说:

=REDUCE(初始值, 数组, LAMBDA(累积值, 当前值, 计算表达式))

第一参数:初始值

就是开始计算前的”底子”。求和的话填0,求乘积的话填1,拼接字符串的话填空文本””。

第二参数:数组

你要处理的那组数据,比如A2:A10。

第三参数:LAMBDA表达式

这里面有两个变量:

  • 累积值(一般用x或acc表示):就是上一步算完的结果,第一步时等于初始值
  • 当前值(一般用y表示):数组里当前正在处理的那个数

后面的计算表达式,就是告诉它”怎么用累积值和当前值算出新的结果”。

我一开始总是把x和y搞混,后来总结了个窍门:x是”已经攒下来的”,y是”刚拿到手的”。这样想就不容易错了。

案例一:计算一组数字的总和

这是最基础也最好理解的用法。

假设 A2:A6 单元格分别是 10、20、30、40、50,要计算它们的总和。

在任意单元格输入:

=REDUCE(0, A2:A6, LAMBDA(x, y, x+y))

回车后得到结果 150

具体看动图:

来拆解一下计算过程:

怎么样?这样一步步看,是不是好理解多了?

其实用 SUM 函数也能实现同样的效果,这里只是为了帮大家理解 REDUCE 的运行逻辑。真正的威力在后面。


案例二:计算立方和

这是 WPS 社区丁功令老师分享过的经典案例。

假设 A2:A5 分别是 1、2、3、4,要计算每个数的立方再求和(即 1+8+27+64)。

公式如下:

=REDUCE(0, A2:A5, LAMBDA(x, y, x+y^3))

具体看动图:

运算过程:

最终结果是 100

如果用传统方法,需要先加一列辅助列计算立方,再求和。REDUCE 一个公式就搞定了。


案例三:合并字符串

这个场景在工作中也很常见。

假设 A2:A7 分别是”我”、”是”、”中”、”职”、”教”、”师”,要合并成一个词。

公式:

=REDUCE(““, A2:A7, LAMBDA(x, y, x&y))

第一参数用空文本 “” 作为初始值,然后通过 & 符号把每个字符依次拼接起来。

最终得到 “我是中职教师”

具体看动图:


案例四:求最大值

不用 MAX 函数,用 REDUCE 也能找出最大值。

假设 A2:A10 是一组数字,公式这样写:

=REDUCE(0, A2:A10, LAMBDA(x, y, IF(y>x, y, x)))

逻辑很简单:每一步都比较当前值和累加器,哪个大就保留哪个。遍历完整个数组,x 里存的就是最大值了。

具体看动图:


对比一下:REDUCE vs SCAN

这两个函数长得很像,容易搞混,我刚开始也分不清。它们的区别用一个例子就能说明白。

同样是计算累积总和:

  • REDUCE=REDUCE(0, A2:A6, LAMBDA(x, y, x+y)) → 只输出 150(最终结果)
  • SCAN=SCAN(0, A2:A6, LAMBDA(x, y, x+y))→ 输出 {10, 30, 60, 100, 150}(每一步的结果)

需要看过程用 SCAN,只看结果用 REDUCE,按需选择就好。

具体看动图:

我自己刚开始也分不清,后来总结:REDUCE像老板,只看最终成绩;SCAN像监工,每步都要记录。 这样记就不容易混了。


使用注意事项

  1. 需要较新版本的 WPS。REDUCE 和 LAMBDA 是 WPS 在 2024 年新增的函数,如果你的版本比较旧可能没有。建议把 WPS 更新到最新版再试。
  2. LAMBDA 里的变量名可以自己定。不一定非要用 x 和 y,用 a、b 或者 m、n 都行,只要前后一致就可以。
  3. 第一参数不能省略。虽然有些场景下初始值看起来”没用”,但语法上必须写。
  4. 数组可以是区域引用,也可以是内存数组。比如用 MID+SEQUENCE 临时生成的数组也能作为 REDUCE 的第二参数。

学习心得

说实话,REDUCE这个函数,我到现在也不敢说完全掌握了。上面这些例子,有些是我自己摸索的,有些是看了社区大佬的帖子学着理解的。

但我的体会是,学函数不用贪多,先把基本语法搞懂,再从一个简单例子入手,慢慢扩展。就像这篇文章,从最基础的累加开始,一步步到字符串拼接、条件判断、数据堆叠,每个例子只比上一个多一点点东西,这样学起来不会太吃力。

另外,REDUCE一定要配合LAMBDA用,所以学REDUCE之前,建议先了解一下LAMBDA函数的基本写法,不然两个一起学容易懵。

还有一点想说的是,这两年实实在在看到WPS这款国产办公软件的进步,新函数越来越多,功能也越来越强。以前很多需要VBA才能做的事,现在用函数就能搞定,这对我们普通用户来说真的是好事。


写在最后

以上就是我对REDUCE函数的一些理解和分享,都是基础应用,适合刚接触这个函数的朋友。

如果你是函数高手,可能觉得这些太简单了,欢迎在评论区补充更多高级用法。如果刚入门看不太懂,也别着急,把第一个累加的例子弄明白,其他的慢慢来。

我是墨云轩,热衷分享办公小技巧,边学习,边分享,每天进步一点点!