上一篇我们聊了如何用 LAMBDA 把“又长又臭”的嵌套公式,打包成你专属的自定义函数。
但这还不是现代 Excel 的完全体。
在日常工作中,你肯定遇到过这种让人崩溃的场景:需要对一组数据进行“反复、逐个”地处理。 比如:把一段乱七八糟的文本里,包含的 10 种不同乱码符号全部替换掉;或者根据一份每个月都在变动的动态费率表,逐层计算最终的复利。
以前遇到这种“需要跑循环”的问题,老手会告诉你:“别用公式了,去写 VBA 宏代码吧,搞个 For...Next 循环。”
但今天,我们要解锁 Excel 函数宇宙的“终极杀器”——REDUCE 函数。它让单元格拥有了真正的“循环计算”能力!
不要被它高端的英文名字吓到,只要你见过“滚雪球”,就能秒懂它的底层逻辑。
想象你正在雪地里滚雪球:
REDUCE 就是这个帮你“自动滚雪球”的机器。
让我们来看一个极其经典的痛点:批量替换多重字符。
假设 A1 单元格里有一段从系统导出的乱码名字:张三@李四#王五¥赵六
你手里有一份“垃圾符号清单”(B1:B3区域),里面是:@、#、¥。
你的目标是把这些符号全删掉。
❌ 以前的痛苦做法(无限套娃):
你得用 SUBSTITUTE(替换函数)一层一层地套:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, "@", ""), "#", ""), "¥", "")
如果垃圾符号有 20 个,你的公式会长到怀疑人生,且极其容易少写一个括号而报错。
✅ REDUCE 的降维打击做法:
只要写下这行极度优雅的代码:
=REDUCE(A1, B1:B3, LAMBDA(雪球, 当前符号, SUBSTITUTE(雪球, 当前符号, "")))
这段大白话翻译过来就是:
Excel 在后台会这样自动为你跑循环(极其舒适):
赛道跑完,REDUCE 直接把最干净的最终结果吐在单元格里!哪怕你的垃圾符号清单有 100 个,这句公式也完全不需要加长,它会自动循环 100 次!