Excel LET函数:让你的公式从’又臭又长’变成’优雅高效’
你有没有经历过这样的场景——
嵌套七八层IF,一个公式写到第三行还在继续,自己都看不懂自己在写什么,但就是能跑。然后过了两个月,老板让你改一下逻辑,你盯着屏幕看了半小时,最后决定删掉重写。
我写过。写完感觉自己是个天才,改的时候觉得自己是个傻子。
直到我发现了LET函数。
01 LET是干什么的?
假设你要算一个复杂的销售提成:
=IF(SUMIFS(销售!B:B,销售!A:A,A2)>100000,
SUMIFS(销售!B:B,销售!A:A,A2)*0.1,
IF(SUMIFS(销售!B:B,销售!A:A,A2)>50000,
SUMIFS(销售!B:B,销售!A:A,A2)*0.05,
SUMIFS(销售!B:B,销售!A:A,A2)*0.02))
看着累不累?SUMIFS写了四遍,看得眼睛疼。
用LET改写:
=LET(
销售额, SUMIFS(销售!B:B,销售!A:A,A2),
IF(销售额>100000, 销售额*0.1,
IF(销售额>50000, 销售额*0.05, 销售额*0.02))
)
销售额只算一次,后面直接用。 公式更短,逻辑更清晰,效率还更高。
02 基本语法
=LET(名字1, 值1, 名字2, 值2, ..., 最终结果)
最简单的例子:
=LET(x, 10, x*2)
返回20。x被定义为10,输出x*2。
稍微复杂一点:
=LET(
单价, B2,
数量, C2,
折扣, IF(数量>100, 0.8, 1),
单价 * 数量 * 折扣
)
一步一步算,最后输出结果。
03 三个核心优势
优势一:公式可读性暴增
以前写公式,像写天书。过两个月自己都看不懂。
用LET,公式自带注释:
=LET(
基础工资, B2,
绩效系数, C2,
加班时长, D2,
时薪, 基础工资/174,
加班费, 加班时长*时薪*1.5,
基础工资*绩效系数 + 加班费
)
每个变量名就是注释。六个月后再看,秒懂。
优势二:避免重复计算
=IF(VLOOKUP(A2,数据!A:Z,5,0)>100,
VLOOKUP(A2,数据!A:Z,5,0)*0.1,
VLOOKUP(A2,数据!A:Z,5,0)*0.05)
VLOOKUP算了几次?三次。数据量大的时候,这公式能把Excel卡死。
用LET:
=LET(
查找值, VLOOKUP(A2,数据!A:Z,5,0),
IF(查找值>100, 查找值*0.1, 查找值*0.05)
)
VLOOKUP只算一次。效率提升,还不容易出错。
优势三:复杂逻辑拆解
遇到超复杂的计算,可以像写代码一样拆步骤:
=LET(
原始数据, FILTER(A2:C100, C2:C100>0),
去重, UNIQUE(原始数据),
排序后, SORT(去重, 3, -1),
取前10, INDEX(排序后, SEQUENCE(10), 0),
取前10
)
每个步骤一个变量,逻辑清晰得像流水线。
04 实战案例:销售提成计算
需求:
- 销售额超过10万,提成10%
- 5-10万,提成5%
- 5万以下,提成2%
- 如果是新客户,额外奖励500元
- :
- :
- 定义变量:给中间结果起名字,公式自带注释
- 避免重复:复杂计算只跑一次,效率翻倍
- 拆解逻辑:像写代码一样组织公式,清晰优雅
不用LET
=IF(SUMIFS(销售!B:B,销售!A:A,A2)>100000,
SUMIFS(销售!B:B,销售!A:A,A2)*0.1 + IF(VLOOKUP(A2,客户!A:B,2,0)="新客户",500,0),
IF(SUMIFS(销售!B:B,销售!A:A,A2)>50000,
SUMIFS(销售!B:B,销售!A:A,A2)*0.05 + IF(VLOOKUP(A2,客户!A:B,2,0)="新客户",500,0),
SUMIFS(销售!B:B,销售!A:A,A2)*0.02 + IF(VLOOKUP(A2,客户!A:B,2,0)="新客户",500,0)))
用LET
=LET(
销售额, SUMIFS(销售!B:B,销售!A:A,A2),
是否新客户, VLOOKUP(A2,客户!A:B,2,0)="新客户",
提成比例, IF(销售额>100000, 0.1, IF(销售额>50000, 0.05, 0.02)),
新客奖励, IF(是否新客户, 500, 0),
销售额 * 提成比例 + 新客奖励
)
高下立判。
05 LET + LAMBDA:神器组合
LET还能和LAMBDA配合,实现自定义函数:
=LET(
计算提成, LAMBDA(销售额,是否新客户,
LET(
比例, IF(销售额>100000,0.1,IF(销售额>50000,0.05,0.02)),
奖励, IF(是否新客户,500,0),
销售额*比例+奖励
)
),
计算提成(SUMIFS(销售!B:B,销售!A:A,A2), VLOOKUP(A2,客户!A:B,2,0)="新客户")
)
然后你可以在任意地方调用这个计算提成函数。一套逻辑,到处复用。
06 我踩过的那些坑
坑1:变量名不能用数字结尾
=LET(销售额1, 100, 销售额1*2)
报错。改成 销售额_1 或者 销售额A 就行。
坑2:最后一个参数忘了写
=LET(x, 10, y, 20)
啥也不返回。因为LET的最后一个参数必须是”最终结果”。
正确写法:
=LET(x, 10, y, 20, x+y)
坑3:变量名和单元格引用冲突
=LET(A1, 100, A1*2)
你想定义一个叫A1的变量,但Excel以为你在引用A1单元格。乱套了。
解决方案:变量名换个写法,比如值1或者num1。
总结
说点实际的——
以前改复杂公式,我都要在旁边开个记事本,先把公式拆开看懂,再改。改完还要测半天,生怕改错了。现在?看变量名就知道每个部分在干嘛,三五分钟搞定。
因为公式逻辑清晰了,低级错误自然就少了。
所以记住这个用法:
花五分钟学会LET,省下的时间可能是一辈子。
如果你也被各种Excel公式折磨,想早点下班又不会写自动化工具,欢迎关注私信聊聊。
夜雨聆风