来源:微软官方支持文档(https://support.microsoft.com/zh-cn/excel/functions/lambda-function) 适用版本:Microsoft 365 专属 Excel、Microsoft 365 Mac 版专属 Excel、Excel 2024、Excel 2024 for Mac、WPS 最新版
简介
使用 LAMBDA 函数可以创建可重用的自定义函数,并使用易记名称调用它们。新函数在整个工作簿中可用,其调用类似本机 Excel 函数。
可以为常用公式创建函数,无需复制并粘贴此公式(可能容易出错),并有效地将自己的函数添加到本机 Excel 函数库中。此外,LAMBDA 函数无需 VBA、宏或 JavaScript,因此非程序员也可以从使用中获益。
语法演示
=LAMBDA(x, y, x+y) ← 定义(参数、函数、计算三部分)
=myLambda(1, 3) ← 调用
→ 输出结果:4
语法
=LAMBDA([parameter1, parameter2, …,] calculation)
| 参数 | 说明 |
|---|---|
| 参数 | 要传递给函数的值,例如单元格引用、字符串或数字。最多可以输入 253 个参数。此参数可选。 |
| 计算 | 要作为函数结果执行并返回的公式。其必须为最后一个参数,且必须返回结果。此参数是必需项。 |
备注
- Lambda 名称和参数遵循 Excel 名称语法规则,但有一个例外:不要在参数名称中使用句点(.)。
- 请确保创建 LAMBDA 函数时遵循最佳做法,就像使用任何本机 Excel 公式一样,例如传递正确的参数数目和类型、匹配左括号和右括号,以及将数字输入为未格式化数字。
- 此外,使用 “求值” 命令时,Excel 会立即返回 LAMBDA 函数的结果,而你无法单步执行。
错误
- 如果输入的参数超过 253 个,则 Excel 会返回 #VALUE! 错误。
- 如果传递给 LAMBDA 函数的参数数目错误,则 Excel 会返回 #VALUE! 错误。
- 如果从自身内部调用 LAMBDA 函数,且调用为循环调用,则 Excel 会返回 #NUM!(如果递归调用过多,则为错误)。
- 如果在单元格中创建 LAMBDA 函数但未同时从单元格内调用该函数,则 Excel 会返回 #CALC! 错误。
创建 LAMBDA 函数(分步流程)
步骤 1:测试公式
确保在 计算 参数中使用的公式正常工作。这一点至关重要,因为在创建 LAMBDA 函数时,你希望确保公式正常工作,且可以在遇到错误或意外行为时排除这种情况。
步骤 2:在单元格中创建 Lambda
好的做法是在单元格中创建并测试 LAMBDA 函数,从而确保其正常工作,包括参数的定义和传递。要避免 #CALC! 错误,请添加对 LAMBDA 函数的调用以立即返回结果:
=LAMBDA function ([parameter1, parameter2, ...], calculation) (function call)
以下示例返回值 2:
=LAMBDA(number, number + 1)(1)
步骤 3:将 Lambda 添加到名称管理器
完成 LAMBDA 函数后,将其移动到名称管理器以获取最终定义。通过执行此操作,可以为 LAMBDA 函数指定有意义的名称、提供说明,并使其可从工作簿中的任何单元格重新使用。还可以像管理任何名称一样管理 LAMBDA 函数,例如字符串常量、单元格区域或表。
操作过程:
-
执行下列操作之一:
- 在 Excel for Windows 中:选择 “公式” → “名称管理器”
- 在 Excel for Mac 中:选择 “公式” → “定义名称”
-
选择 “新建”,然后在 “新建名称” 对话框中输入信息:
| 字段 | 说明 |
|---|---|
| 名称 | 输入 LAMBDA 函数的名称。 |
| 作用域 | 工作簿为默认值。单个工作表也可用(Excel 网页版除外)。 |
| 注释 | 可选,但强烈建议使用。最多输入 255 个字符。简要描述函数用途以及正确的参数数目和类型。当您键入公式并使用公式自动完成(也称为 Intellisense)时,显示在"插入函数"对话框中,并作为工具提示(与计算参数)一起显示。 |
| 引用 | 输入 LAMBDA 函数。 |
- 要创建 LAMBDA 函数,请选择 “确定”。
- 要关闭 “名称管理器” 对话框,请选择 “关闭”。
示例
示例 1:将华氏度转换为摄氏度
在名称管理器中定义以下内容:
| 字段 | 内容 |
|---|---|
| 名称 | ToCelsius |
| 作用域 | 工作簿 |
| 注释 | 将华氏度转换为摄氏度 |
| 引用 | =LAMBDA(temp, (5/9) * (Temp-32)) |
输入数据(A2:A6):
| 华氏度(°F) |
|---|
| 104 |
| 86 |
| 68 |
| 50 |
| 32 |
公式与结果:
| 公式 | 结果(°C) |
|---|---|
=TOCELSIUS(A2) |
40 |
=TOCELSIUS(A3) |
30 |
=TOCELSIUS(A4) |
20 |
=TOCELSIUS(A5) |
10 |
=TOCELSIUS(A6) |
0 |
示例 2:查找斜边
在名称管理器中定义以下内容:
| 字段 | 内容 |
|---|---|
| 名称 | 斜边 |
| 作用域 | 工作簿 |
| 注释 | 返回直角三角形斜边的长度 |
| 引用 | =LAMBDA(a, b, SQRT((a^2+b^2))) |
输入数据(A2:B5,a、b 为两条直角边):
| a | b |
|---|---|
| 3 | 4 |
| 5 | 1.2 |
| 7 | 24 |
| 9 | 40 |
公式与结果:
| 公式 | 结果 |
|---|---|
=HYPOTENUSE(A2,B2) |
5 |
=HYPOTENUSE(A3,B3) |
1.3 |
=HYPOTENUSE(A4,B4) |
25 |
=HYPOTENUSE(A5,B5) |
41 |
示例 3:字数统计
在名称管理器中定义以下内容:
| 字段 | 内容 |
|---|---|
| 名称 | CountWords |
| 作用域 | 工作簿 |
| 注释 | 返回文本字符串中的字数统计 |
| 引用 | =LAMBDA(text, LEN(TRIM(text)) - LEN(SUBSTITUTE(TRIM(text), " ", "")) + 1) |
输入数据(A2:A5):
| 文本 |
|---|
| 当邪恶来敲门。 |
| 我来过,我见过,我征服过。 |
| 一只棕色狐狸快速跳过了那只懒狗。 |
| 使用原力,卢克! |
公式与结果:
| 公式 | 结果(字数) |
|---|---|
=COUNTWORDS(A2) |
5 |
=COUNTWORDS(A3) |
6 |
=COUNTWORDS(A4) |
9 |
=COUNTWORDS(A5) |
4 |
示例 4:查找感恩节日期
在名称管理器中定义以下内容:
| 字段 | 内容 |
|---|---|
| 名称 | ThanksgivingDate |
| 作用域 | 工作簿 |
| 注释 | 返回给定年份的美国感恩节日期 |
| 引用 | =LAMBDA(year, TEXT(DATE(year, 11, CHOOSE(WEEKDAY(DATE(year, 11, 1)), 26, 25, 24, 23, 22, 28, 27)), "mm/dd/yyyy")) |
输入数据(A2:A6,年份):
| 年份 |
|---|
| 2020 |
| 2021 |
| 2022 |
| 2023 |
| 2024 |
公式与结果:
| 公式 | 结果 |
|---|---|
=THANKSGIVINGDATE(A2) |
11/26/2020 |
=THANKSGIVINGDATE(A3) |
11/25/2021 |
=THANKSGIVINGDATE(A4) |
11/24/2022 |
=THANKSGIVINGDATE(A5) |
11/23/2023 |
=THANKSGIVINGDATE(A6) |
11/28/2024 |
文档整理日期:2026-09-30