使用 aLAMBDA 函数创建可重用的自定义函数,并使用易记名称调用它们。 新函数在整个工作簿中可用,其调用类似本机 Excel 函数。
可以为常用公式创建函数,无需复制并粘贴此公式(可能容易出错),并有效地将自己的函数添加到本机 Excel 函数库中。 此外,LAMBDA 函数不需要 VBA、宏或 JavaScript,因此非程序员也可以从它的使用中受益。
语法
=LAMBDA([parameter1, parameter2, …,] calculation)
| 参数 | 说明 |
|---|---|
| 参数 | 要传递给函数的值,例如单元格引用、字符串或数字。 最多可以输入 253 个参数。 此参数可选。 |
| 计算 | 要作为函数结果执行并返回的公式。 其必须为最后一个参数,且必须返回结果。 此参数是必需项。 |
备注
- Lambda 名称和参数遵循 Excel 语法规则进行名称,但有一个例外:不要在参数名称中使用句点 (.) 。 有关详细信息,请参阅 公式中的名称。
- 请确保创建 LAMBDA 函数时遵循最佳做法,就像使用任何本机 Excel 公式一样,例如传递正确的参数数目和类型、匹配左括号和右括号,以及将数字输入为未格式化数字。 此外,使用 Evaluate 命令时,Excel 会立即返回 LAMBDA 函数的结果,而你无法单步执行该函数。 有关详细信息,请参阅 检测公式中的错误。
错误
- 如果输入的参数超过 253 个,则 Excel 会返回 #VALUE! 错误。
- 如果传递给 LAMBDA 函数的参数数目错误,则 Excel 会返回 #VALUE! 错误。
- 如果从自身内部调用 LAMBDA 函数,且调用为循环调用,则 Excel 会返回 #NUM! 如果递归调用过多,则为错误。
- 如果在单元格中创建 LAMBDA 函数但未同时从单元格内调用该函数,则 Excel 会返回 #CALC! 错误。
创建 LAMBDA 函数
以下为要遵循的分步流程,其有助于确保 Lambda 按预期工作,且与本机 Excel 函数的行为非常相似。
步骤 1: 测试公式
确保 计算参数中使用的 公式正常工作。 这一点至关重要,因为在创建 LAMBDA 函数时,你希望确保公式正常工作,且可以在遇到错误或意外行为时排除这种情况。 有关详细信息,请参阅 Excel 中的公式概述 和 在 Excel 中创建简单公式。
步骤 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) 时,将作为工具提示 (以及 Calculation 参数) 。引用: 输入 LAMBDA 函数。 例如:
要创建 LAMBDA 函数,请选择“确定”。
要关闭“名称管理器”对话框,请选择“关闭”。
有关详细信息,请参阅 使用名称管理器。
示例
示例 1: 将华氏度转换为摄氏度
在名称管理器中定义以下内容:
| 名称: | ToCelsius |
|---|---|
| 作用域: | 工作簿 |
| 注释: | 将华氏度转换为摄氏度 |
| 引用: | =LAMBDA(temp, (5/9) * (Temp-32)) |
复制下表中的示例数据,然后将其粘贴进新 Excel 工作表的 A1 单元格中。 如果需要,可调整列宽以查看所有数据。
| 数据 | |
|---|---|
| 104 | |
| 86 | |
| 68 | |
| 50 | |
| 32 | |
| 公式 | 结果 |
| =TOCELSIUS(A2) | 40 |
| =TOCELSIUS(A3) | 30 |
| =TOCELSIUS(A4) | 20 |
| =TOCELSIUS(A5) | 10 |
| =TOCELSIUS(A6) | 0 |
示例 2: 查找斜边
在名称管理器中定义以下内容:
| 名称: | 斜边 |
|---|---|
| 作用域: | 工作簿 |
| 注释: | 返回直角三角形斜边的长度 |
| 引用: | =LAMBDA(a, b, SQRT((a^2+b^2))) |
复制下表中的示例数据,然后将其粘贴进新 Excel 工作表的 A1 单元格中。 如果需要,可调整列宽以查看所有数据。
| 数据 | |
|---|---|
| 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) |
复制下表中的示例数据,然后将其粘贴进新 Excel 工作表的 A1 单元格中。 如果需要,可调整列宽以查看所有数据。
| 数据 | |
|---|---|
| 当邪恶来敲门。 | |
| 我来过,我见过,我征服过。 | |
| 一只棕色狐狸快速跳过了那只懒狗。 | |
| 使用原力,卢克! | |
| 公式 | 结果 |
| =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")) |
复制下表中的示例数据,然后将其粘贴进新 Excel 工作表的 A1 单元格中。 如果需要,可调整列宽以查看所有数据。
| 数据 | |
|---|---|
| 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 |
需要更多帮助吗?
你随时可以在 Excel 技术社区 中咨询专家或在 社区中获取支持。