WPS LET()函数的用法(附带实例)
LET() 函数可以将计算结果分配给名称,通过定义的名称来计算结果。
LET() 函数的语法格式如下:
LET() 函数至少需要设置一组名称,最多支持 126 组名称,定义的名称仅在 LET() 函数中使用。LET() 函数的参数分两部分:第 1 部分是名称的定义,每一组名称占用两个参数,依次是名称和名称对应的值;第 2 部分在最后一个参数中编写计算公式。一个正确的 LET() 函数使用的参数数量一定是奇数。
【实例 1】根据长和宽计算面积。在 D5 单元格输入公式:

图 1 根据长和宽计算面积
LET() 函数的第 1 个参数设置名称为“长”,第 2 个参数设置对应值为 B5 单元格,第 3 个参数设置名称为“宽”,第 4 个参数设置对应值为 C5 单元格,第 5 个参数设置计算公式为“长”乘以“宽”,公式返回计算结果为 1000。
【实例 2】根据期初表、入库表、出库表计算当前库存。在 C13 单元格输入公式:

图 2 根据期初表、入库表、出库表计算当前库存
使用 LET() 函数依次定义了“期初”、“入库”、“出库” 3 个名称,使用 SUMIFS() 函数计算每个表对应的产品数量为每个名称的值,最后一个参数编写计算公式,“期初”数量加“入库”数量减“出库”数量即可计算出当前库存数量。
使用 LET() 函数可以更直观地表达公式计算逻辑,在编写或调试公式时也更加方便。在定义好对应名称后,通过修改最后一个参数的计算公式,可以快速地了解每个名称返回的结果。
【实例 3】计算销售提成,1000 元以下无提成,1000 元以上提成为销售额的 10%。在 C23 单元格输入公式:

图 3 计算销售提成
使用 LET() 函数第 1 个参数定义名称为“销售额”,使用 SUMIFS() 函数计算对应姓名的合计金额作为名称值,定义好名称后,编写计算公式,使用 IF() 函数判断如果销售额大于 1000,销售额乘以 0.1(0.1 换算成百分比为 10%),计算提成金额,否则返回“无提成”。
当公式中需要多次使用一个相同的计算公式时,可以使用 LET() 函数来简化公式,在简化公式的同时还能提升公式计算效率。
【实例 4】根据品牌、名称、型号查询对应的售价、物流、成本并计算利润金额。
1) 使用公式 1:在 I36 单元格输入公式:

图 4 计算利润-公式1
使用 SUMIFS() 函数根据条件分别统计“售价”、“物流”、“成本”金额合计,用“售价”金额减去“物流”金额,再减去“成本”金额,即可得出“利润”金额。
2) 使用公式 2:在 I36 单元格输入公式:

图 5 计算利润-公式2
使用 LET() 函数依次定义了“售价”、“物流”、“成本” 3 个名称,使用 SUMIFS() 函数计算,将结果作为每个名称的值,最后一个参数编写计算公式,“售价”金额减去“物流”金额,再减去“成本”金额,即可得出“利润”金额。
通过观察可以发现,多个 SUMIFS() 函数中的条件是相同的,只有第 1 个参数求和区域不同,可以在 LET() 函数中使用 LAMBDA() 函数创建一个自定义函数,然后依次将不同的求和单元格区域传入自定义函数中即可。
3) 使用公式 3:在 I36 单元格输入公式:

图 6 计算利润-公式3
使用 LET() 函数的第 1 个参数定义一个名称为 fx 的自定义函数,LET 函数的第 2 个参数使用 LAMBDA() 函数创建自定义函数,LAMBDA() 函数的第 1 个参数的名称为 x,LAMBDA() 函数的最后一个参数计算公式,使用 SUMIFS() 函数统计,SUMIFS() 函数的第 1 个参数求和区域引用变量名称 x,条件区域及条件依次引用指定单元格区域、单元格,创建好自定义函数后,分 3 次调用自定义函数,依次将“售价”、“物流”、“成本”所在单元格区域传入自定义函数即可。
4) 使用公式 4:在 I36 单元格输入公式:

图 7 计算利润-公式4
使用 LET() 函数依次定义了“售价”、“物流”、“成本” 3 个名称,依次引用“售价”、“物流”、“成本”所在的单元格区域作为名称值,在调用 LET() 函数创建的名称为 fx 的自定义函数时,依次将定义的“售价”、“物流”、“成本” 3 个名称传入自定义函数即可。
2) 使用 LET() 函数定义多个名称时,根据定义名称的顺序,名称对应值可以引用此名称之前的名称参与计算,不可引用此名称之后的名称,否则 LET() 函数将返回错误值 #NAME?。
在 B4 单元格输入公式:

图 8 引用了无效名称
使用 LET() 函数依次定义 a、b 两个名称,因第 1 个名称 a 对应值引用第 2 个名称 b 参与计算,所以 LET() 函数返回错误值 #NAME?。
使用 LET() 函数定义多个名称时,当引用此名称之后的名称时,除了 LET() 函数返回错误值 #NAME? 外,还有可能弹出“您输入的公式存在错误”提示框,无法输入公式,在 B4 单元格输入公式:

图 9 提示“您输入的公式存在错误”
LET() 函数的语法格式如下:
LET(名称1, 名称值1, [名称2, 名称值2], …, 计算公式)参数说明如下:
- 名称1(必填项):符合命名规则的名称;
- 名称值1(必填项):值、数组、单元格引用、计算公式、LAMBDA 函数公式;
- 名称2(可选项):符合命名规则的名称;
- 名称值2(可选项):值、数组、单元格引用、计算公式、LAMBDA 函数公式;
- 参数 n(最后一个参数,必填项):最后一个参数必须是计算公式。
LET() 函数至少需要设置一组名称,最多支持 126 组名称,定义的名称仅在 LET() 函数中使用。LET() 函数的参数分两部分:第 1 部分是名称的定义,每一组名称占用两个参数,依次是名称和名称对应的值;第 2 部分在最后一个参数中编写计算公式。一个正确的 LET() 函数使用的参数数量一定是奇数。
【实例 1】根据长和宽计算面积。在 D5 单元格输入公式:
=LET(长,B5,宽,C5,长*宽)效果如下图所示:

图 1 根据长和宽计算面积
LET() 函数的第 1 个参数设置名称为“长”,第 2 个参数设置对应值为 B5 单元格,第 3 个参数设置名称为“宽”,第 4 个参数设置对应值为 C5 单元格,第 5 个参数设置计算公式为“长”乘以“宽”,公式返回计算结果为 1000。
【实例 2】根据期初表、入库表、出库表计算当前库存。在 C13 单元格输入公式:
=LET(期初,SUMIFS($F$13:$F$16,$E$13:$E$16,B13),入库,SUMIFS($J$13:$J$16,$I$13:$I$16,B13),出库,SUMIFS($N$13:$N$16,$M$13:$M$16,B13),期初+入库-出库)效果如下图所示:

图 2 根据期初表、入库表、出库表计算当前库存
使用 LET() 函数依次定义了“期初”、“入库”、“出库” 3 个名称,使用 SUMIFS() 函数计算每个表对应的产品数量为每个名称的值,最后一个参数编写计算公式,“期初”数量加“入库”数量减“出库”数量即可计算出当前库存数量。
使用 LET() 函数可以更直观地表达公式计算逻辑,在编写或调试公式时也更加方便。在定义好对应名称后,通过修改最后一个参数的计算公式,可以快速地了解每个名称返回的结果。
【实例 3】计算销售提成,1000 元以下无提成,1000 元以上提成为销售额的 10%。在 C23 单元格输入公式:
=LET(销售额,SUMIFS($G$23:$G$28,$F$23:$F$28,B24),IF(销售额>1000,销售额*0.1,"无提成"))效果如下图所示:

图 3 计算销售提成
使用 LET() 函数第 1 个参数定义名称为“销售额”,使用 SUMIFS() 函数计算对应姓名的合计金额作为名称值,定义好名称后,编写计算公式,使用 IF() 函数判断如果销售额大于 1000,销售额乘以 0.1(0.1 换算成百分比为 10%),计算提成金额,否则返回“无提成”。
当公式中需要多次使用一个相同的计算公式时,可以使用 LET() 函数来简化公式,在简化公式的同时还能提升公式计算效率。
【实例 4】根据品牌、名称、型号查询对应的售价、物流、成本并计算利润金额。
1) 使用公式 1:在 I36 单元格输入公式:
=SUMIFS(G33:G45,B33:B45,I33,C33:C45,J33,D33:D45,K33) -SUMIFS(F33:F45,B33:B45,I33,C33:C45,J33,D33:D45,K33) -SUMIFS(E33:E45,B33:B45,I33,C33:C45,J33,D33:D45,K33)效果如下图所示:

图 4 计算利润-公式1
使用 SUMIFS() 函数根据条件分别统计“售价”、“物流”、“成本”金额合计,用“售价”金额减去“物流”金额,再减去“成本”金额,即可得出“利润”金额。
2) 使用公式 2:在 I36 单元格输入公式:
=LET( 售价,SUMIFS(G33:G45,B33:B45,I33,C33:C45,J33,D33:D45,K33), 物流,SUMIFS(F33:F45,B33:B45,I33,C33:C45,J33,D33:D45,K33), 成本,SUMIFS(E33:E45,B33:B45,I33,C33:C45,J33,D33:D45,K33), 售价-物流-成本)效果如下图所示:

图 5 计算利润-公式2
使用 LET() 函数依次定义了“售价”、“物流”、“成本” 3 个名称,使用 SUMIFS() 函数计算,将结果作为每个名称的值,最后一个参数编写计算公式,“售价”金额减去“物流”金额,再减去“成本”金额,即可得出“利润”金额。
通过观察可以发现,多个 SUMIFS() 函数中的条件是相同的,只有第 1 个参数求和区域不同,可以在 LET() 函数中使用 LAMBDA() 函数创建一个自定义函数,然后依次将不同的求和单元格区域传入自定义函数中即可。
3) 使用公式 3:在 I36 单元格输入公式:
=LET(fx,LAMBDA(x,SUMIFS(x,B33:B45,I33,C33:C45,J33,D33:D45,K33)),fx(G33:G45)-fx(F33:F45)-fx(E33:E45))效果如下图所示:

图 6 计算利润-公式3
使用 LET() 函数的第 1 个参数定义一个名称为 fx 的自定义函数,LET 函数的第 2 个参数使用 LAMBDA() 函数创建自定义函数,LAMBDA() 函数的第 1 个参数的名称为 x,LAMBDA() 函数的最后一个参数计算公式,使用 SUMIFS() 函数统计,SUMIFS() 函数的第 1 个参数求和区域引用变量名称 x,条件区域及条件依次引用指定单元格区域、单元格,创建好自定义函数后,分 3 次调用自定义函数,依次将“售价”、“物流”、“成本”所在单元格区域传入自定义函数即可。
4) 使用公式 4:在 I36 单元格输入公式:
=LET( 售价,G33:G45, 物流,F33:F45, 成本,E33:E45, fx,LAMBDA(x,SUMIFS(x,B33:B45,I33,C33:C45,J33,D33:D45,K33)), fx(售价)-fx(物流)-fx(成本))效果如下图所示:

图 7 计算利润-公式4
使用 LET() 函数依次定义了“售价”、“物流”、“成本” 3 个名称,依次引用“售价”、“物流”、“成本”所在的单元格区域作为名称值,在调用 LET() 函数创建的名称为 fx 的自定义函数时,依次将定义的“售价”、“物流”、“成本” 3 个名称传入自定义函数即可。
LET()函数注意事项
1) 使用 LET() 函数定义名称时,需符合名称命名规范:- 在使用 LET() 函数定义多个名称时,多个名称不可重复;
- 名称不能使用单元格地址,如 A1、R1C1 等;
- 名称不能用纯数字或数字开头的字符串;
- 名称长度不能超过 255 个字符;
- 名称不能使用逻辑值,如 TRUE、FALSE 等;
- 名称不能包含除汉字、字母、数字、句号、问号、下画线之外的符号。
2) 使用 LET() 函数定义多个名称时,根据定义名称的顺序,名称对应值可以引用此名称之前的名称参与计算,不可引用此名称之后的名称,否则 LET() 函数将返回错误值 #NAME?。
在 B4 单元格输入公式:
=LET(a,b+10,b,10,a)效果如下图所示:

图 8 引用了无效名称
使用 LET() 函数依次定义 a、b 两个名称,因第 1 个名称 a 对应值引用第 2 个名称 b 参与计算,所以 LET() 函数返回错误值 #NAME?。
使用 LET() 函数定义多个名称时,当引用此名称之后的名称时,除了 LET() 函数返回错误值 #NAME? 外,还有可能弹出“您输入的公式存在错误”提示框,无法输入公式,在 B4 单元格输入公式:
=LET(a,10,b,c+20,c,30,b)效果如下图所示:

图 9 提示“您输入的公式存在错误”