乐于分享
好东西不私藏

Excel LET函数:让你的公式从’又臭又长’变成’优雅高效’

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公式折磨,想早点下班又不会写自动化工具,欢迎关注私信聊聊。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Excel LET函数:让你的公式从’又臭又长’变成’优雅高效’

猜你喜欢

  • 暂无文章