各位Excel打工人,今天我要带你们解锁一个“让公式自己长胖”的神技——REDUCE函数!从简单的累计计算到多维数据核爆,全程无痛教学,让你的数据像雪球一样越滚越大,摸鱼时间越滚越长!
第1章:基础语法——雪球的核心是“滚”
1.1 REDUCE函数的三件套
公式结构:
=REDUCE( 初始值, -- 雪球的起点(比如0、{""}) 数据源, -- 要处理的数组(比如A1:A10) LAMBDA(雪球, 当前值, 计算逻辑) -- 雪球怎么滚大 )
原理拆解:
初始值:是雪球的“种子”,决定了雪球从哪里开始生长(比如0代表从零累计,空数组{}代表从头构建表格)。
数据源:是雪球滚动的“山坡”,REDUCE会逐个抓取其中的元素喂给LAMBDA函数。
LAMBDA:是推雪球的“手”,每次用当前值和雪球状态生成新雪球。
第2章:初级应用——雪球の初体验
2.1 累计销售额计算(打工人必备)
场景:计算月度销售额的累计值
魔法公式:
=REDUCE( 0, -- 初始雪球:从0开始 B2:B4, -- 要滚动的销售额数据 LAMBDA(雪球, 本月, 雪球 + 本月) )
输出结果:
450 -- 自动生成累计值
原理拆解:
初始雪球为0,开始滚动第一个数据点100 新雪球=0+100=100
第二次滚动时,雪球=100,加上当前值200 新雪球=300
第三次滚动时,雪球=300,加上当前值150 最终雪球=450
财务姐姐再也不用手动拖公式,REDUCE让她有时间给Excel表格织毛衣
2.2 动态去重(数据洗澡机)
场景:清洗包含重复项的客户名单
魔法公式:
=REDUCE( A1, -- 初始雪球:带标题的空表 A2:A5, LAMBDA(雪球, 当前客户, IF(ISNA(VLOOKUP(当前客户,雪球,1,)), VSTACK(雪球, 当前客户), -- 堆新客户到雪球 雪球 -- 重复客户跳过 ) ) )
输出结果:
原理拆解:
初始雪球为"客户姓名",开始处理第一个值“张三” 检查雪球中不存在“张三” 用VSTACK将“张三”堆到雪球下方
处理“李四”时同样操作 雪球扩展为{"客户姓名","张三","李四"}
处理第二个“张三”时,VLOOKUP检测到重复 跳过不处理
最终雪球保留所有不重复值
第3章:中级应用——雪球の豪华升级版
3.1 财务科目汇总(让数字自己认妈)
场景:自动汇总多层级科目余额
魔法公式:
=REDUCE( {"科目代码", "汇总金额"}, UNIQUE(LEFT(A2:A5,4)), -- 提取一级科目代码(如1001) LAMBDA(雪球, 一级科目, LET( 明细金额, FILTER(C2:C5, A2:A5&""=一级科目), -- 抓取子科目 VSTACK(雪球, HSTACK(一级科目, SUM(明细金额))) -- 堆叠汇总行 ) ) )
输出结果:
原理拆解:
初始雪球为标题行{"科目代码","汇总金额"}
UNIQUE(LEFT(...))提取所有一级科目代码(1001和2001)
对每个一级科目:
A2:A5&""=一级科目:筛选出所有以该代码开头的子科目(如1001筛选出100101和100102)
SUM(明细金额):汇总子科目金额
HSTACK生成[科目代码, 汇总金额]格式的行
VSTACK将新行堆到雪球下方
第4章:核弹应用——雪球の禁忌奥义
4.1 动态KPI仪表盘(让数据自己打工)
场景:生成部门KPI矩阵(销售额+成本+利润率)
需求:自动计算利润率并将二维表格转换成一维列表
核弹公式:
=REDUCE( {"部门", "指标", "值"}, A2:A3, -- 部门列 LAMBDA(总雪球, 部门, REDUCE( 总雪球, {"销售额", "成本", "利润率"}, -- 指标列表 LAMBDA(子雪球, 指标, LET( 值, SWITCH(指标, "销售额", XLOOKUP(部门, A2:A3, B2:B3), "成本", XLOOKUP(部门, A2:A3, C2:C3), (B2-C2)/B2 ), VSTACK(子雪球, HSTACK(部门, 指标, 值)) ) ) ) ) )
输出结果:
原理拆解:
外层REDUCE遍历部门(A部、B部)
初始雪球为标题行{"部门","指标","值"}
内层REDUCE遍历每个部门的指标{"销售额", "成本", "利润率"}
销售额和成本直接通过XLOOKUP取值
利润率动态计算(销售额-成本)/销售额
SWITCH函数根据指标名选择计算逻辑:
HSTACK将部门、指标、值合并为一行
VSTACK将新行堆到雪球下方
双层滚动最终生成完整的KPI矩阵
终章:REDUCE函数生存法则
三大定律:
雪球越滚越富:初始值决定贫穷还是富有(比如0或{""})
错误隔离机制:单个元素报错不会引发雪崩
摸鱼守恒定律:REDUCE省下的时间必须用于刷剧
立即行动:
用=REDUCE("", A1:A20, LAMBDA(a,b,a&b))合并A1:A20单元格内容
下期预告:
《SCAN函数:让Excel得“健忘症”,边算边忘才是真快乐!》
附录:REDUCE防翻车指南
若雪球滚太快导致Excel卡死:
按下ESC紧急制动
对老板说:「微软更新导致系统不稳定!」
深藏功与名(并默默转发本文给IT同事)
(星标公众号,防开除护盾每日刷新)
领取专属 10元无门槛券
私享最新 技术干货