跳转至

LAMBDA 函数

函数概述

LAMBDA 是 Excel 动态数组体系中的“自定义函数”工具。它允许你在不写 VBA 的情况下,把一段公式封装成可复用的函数,并且:

  • 能接收参数、返回结果(像内置函数一样使用)
  • 可以与 LET 配合让公式更清晰、更易维护
  • 可以通过“名称管理器”把它注册成工作簿级函数
  • 支持递归(配合合适的写法可实现循环类逻辑)

适用场景包括:重复出现的长公式、复杂计算逻辑封装、团队共享统一口径的计算规则等。

基础语法

=LAMBDA([参数1], [参数2], …, 计算表达式)

常见搭配写法:

  1. 直接在单元格中定义并立刻调用(临时使用)

    =LAMBDA(x, x^2)(A1)
    

  2. 与名称管理器配合(长期复用) 在“公式 → 名称管理器”中新建名称(如:平方),引用位置填:

    =LAMBDA(x, x^2)
    

    然后在单元格中像函数一样用:

    =平方(A1)
    

参数说明

项目 是否必填 说明 示例
参数1…参数N 否(可为0个) 自定义输入变量,名称可自取(建议见名知意) x,a,text,arr
计算表达式 函数主体,必须是一个能返回结果的表达式 x^2SUM(arr)

补充规则(理解即可):

  • 参数名需符合 Excel 名称规则(不要用空格、不要以数字开头等)
  • LAMBDA 最后一个参数一定是计算表达式;前面都是参数列表
  • 可返回任意结果:数字、文本、逻辑值、数组、错误等

基础用法示范

示例1:一参公式封装

需求:把“含税价 = 不含税价 × (1+税率)”封装成函数。

临时写法(定义后立刻调用):

=LAMBDA(price, rate, price*(1+rate))(A2, B2)

注册成名称(名称管理器建:含税价):

=LAMBDA(price, rate, price*(1+rate))

使用:

=含税价(A2, B2)

示例2:让长公式变短

需求:计算“(销售额-成本)/销售额”,并避免除以0。

直接写可能很长:

=IF(A2=0, 0, (A2-B2)/A2)

用 LAMBDA 封装(名称:毛利率):

=LAMBDA(sales, cost, IF(sales=0, 0, (sales-cost)/sales))

使用:

=毛利率(A2, B2)

示例3:配合LET提升可读性

需求:计算“订单金额=数量×单价×(1-折扣)”,且折扣可能为空。

名称:订单额

1
2
3
4
5
6
=LAMBDA(qty, price, disc,
  LET(
    d, IF(disc="", 0, disc),
    qty*price*(1-d)
  )
)

使用:

=订单额(A2, B2, C2)

示例4:处理数组输入

需求:对一列数字做“去负值”(负数变0),并返回整列结果。

名称:去负值

=LAMBDA(arr, IF(arr<0, 0, arr))

使用(arr 可为区域):

=去负值(A2:A10)

这会返回溢出数组结果,自动填充。


示例5:递归实现累加到N

需求:返回 1+2+…+n。

名称:累加到N

1
2
3
=LAMBDA(n,
  IF(n<=1, 1, n + 累加到N(n-1))
)

使用:

=累加到N(10)

说明:递归依赖“名称管理器中的函数名”来调用自己,所以这类写法通常需要先注册名称再使用。

总结

  • LAMBDA 的核心价值是:把公式变成可复用的自定义函数,减少重复、统一口径、提升可维护性。
  • 基本结构是“参数列表 + 计算表达式”,可在单元格中临时定义调用,也可在名称管理器中注册为函数名。
  • LET 配合可显著提升复杂逻辑的可读性;对数组友好,适合动态数组场景。
  • 需要重复使用、多人协作或公式越来越长时,把逻辑封装成 LAMBDA 往往是最省心的做法。