ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5936|回复: 19

[分享] LET函数惊艳了!名称赋值,用完即走,编程思维展现无穷魅力!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-9-20 16:25 | 显示全部楼层 |阅读模式
本帖最后由 lgcmeli 于 2020-9-20 16:47 编辑

image.png

LET(名称n,名称值n,......,包含名称的计算表达式)

-名称,指的就是定义名称,可以是中文可以是字母等
-名称值,可以是单元格,可以是单元格区域,可以是函数公式等
-表达式,必须包含LET里已定义的一个或若干名称的函数公式等

这种LET语法相当于在LET内部进行变量命名并编程的感觉

看起来似乎不好懂。
咱们举例说明。

1、比如根据城市名和月份,查询其销量
如下图
image.jpg

D13单元格
=LET(city,B3:B11,
mon,C2:H2,
INDEX(C3:H11,MATCH(B13,city,),MATCH(C13,mon,0)))


也可以写成这样:
=LET(city,MATCH(B13,B3:B11,),
mon,MATCH(C13,C2:H2,0),
INDEX(C3:H11,city,mon))

不过你似乎想说,这么干不是更复杂吗
原本只需要这样就可以解决问题了
=INDEX(C3:H11,MATCH(B13,B3:B11,),MATCH(C13,C2:H2,))

为什么要在LET函数里先定义名称,
再把这个名称给其他的函数公式去调用呢
其实这体现了一种编程思维
即时定义名称,即时被函数公式使用,提高效率,用完就走
当前LET里定义的名称,只能在当前LET函数里被使用

2、再看一个例子
右侧已经统计出每个人每个城市的销售金额之和
但现在要求根据公司给定的提成标准
分别计算出每个城市每个人应计提的奖金是多少
如果要你直接在H2单元格里写出公式计算出提成奖金,
你该怎么写公式?

image.jpg
=SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1)*IF(SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1)>=100000,10%,IF(SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1)>50000,8%,IF(SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1)>30000,5%,IF(SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1)>10000,3%,1%))))

image.jpg

看起来其实比较复杂
主要在于IF的多层嵌套里SUMIFS函数在不断被使用

那么,我们可以写得简单一点吗。
当然可以的。
以前的版本可以提前在名称管理器里定义名称
但是定义起来相对有一些要求
而现在365版本就简单多了

=LET(x,SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1),
x*IF(x>=100000,10%,IF(x>50000,8%,IF(x>30000,5%,IF(x>10000,3%,1%)))))

如果你把IF改成IFS就跟简单了
=LET(x,SUMIFS($D:$D,$B:$B,$G20,$C:$C,H$1),
x*IFS(x>=100000,10%,x>50000,8%,x>30000,5%,x>10000,3%,x>=0,1%))

或者把IF改成VLOOKUP近似查询
那么公式又改成这样:

=LET(和,SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1),
和*VLOOKUP(和,$T$1:$U$5,2,1))
或者
=LET(和,SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1),
和*VLOOKUP(和,
{0,0.01;10000.00001,0.03;30000.00001,0.05;50000.00001,0.08;100000,0.1},2,1))




image.png

点评

急速360浏览器,有些链接不显示过。不确定过段时间链接是否有效,请把链接换成上传图片。  发表于 2020-9-21 10:20

评分

5

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-9-20 16:26 | 显示全部楼层
3、根据城市销售金额明细
找出金额排名前5的城市
原先的做法是这样的
先用删除重复项得到F列唯一城市名
然后用SUMIF统计金额
得到所有城市销售金额统计表
=SUMIF(B:B,F4,C:C)


最后再弄一个区域得到排名后的前5名数据报表

=INDEX($F$4:$G$12,MATCH(LARGE($H$4:$H$12,ROW($A1)),$H$4:$H$12,0),COLUMN(A$1))




那么刺激的来了
能不能一步到位呢
当然可以
很多高手可以做到用数组公式
各种嵌套一步到位实现
不过要读懂要很久很久

今天我们用LET函数结合新版的
其他经典函数来实现
M4单元格
=LET(城,B2:B90,金,C2:C90,唯,UNIQUE(城),总,SUMIF(城,唯,金),序,SORTBY(唯,总,-1),INDEX(序,SEQUENCE(5)))

N4单元格
=LET(城,B2:B90,金,C2:C90,唯,UNIQUE(城),总,SUMIF(城,唯,金),序,SORTBY(总,总,-1),INDEX(序,SEQUENCE(5)))


其实你认真去理解
LET里面带有编程思维

更多LET用法不做过多介绍
依赖你将来在用的时候
再去体会和总结

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-9-20 16:27 | 显示全部楼层
3、根据城市销售金额明细
找出金额排名前5的城市
原先的做法是这样的
先用删除重复项得到F列唯一城市名
然后用SUMIF统计金额
得到所有城市销售金额统计表
=SUMIF(B:B,F4,C:C)


最后再弄一个区域得到排名后的前5名数据报表

=INDEX($F$4:$G$12,MATCH(LARGE($H$4:$H$12,ROW($A1)),$H$4:$H$12,0),COLUMN(A$1))




那么刺激的来了
能不能一步到位呢
当然可以
很多高手可以做到用数组公式
各种嵌套一步到位实现
不过要读懂要很久很久

今天我们用LET函数结合新版的
其他经典函数来实现
M4单元格
=LET(城,B2:B90,金,C2:C90,唯,UNIQUE(城),总,SUMIF(城,唯,金),序,SORTBY(唯,总,-1),INDEX(序,SEQUENCE(5)))

N4单元格
=LET(城,B2:B90,金,C2:C90,唯,UNIQUE(城),总,SUMIF(城,唯,金),序,SORTBY(总,总,-1),INDEX(序,SEQUENCE(5)))


其实你认真去理解
LET里面带有编程思维

更多LET用法不做过多介绍
依赖你将来在用的时候
再去体会和总结

TA的精华主题

TA的得分主题

发表于 2020-9-20 18:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
图片都失败了不过let一般版本还用不了啊,只能瞅瞅

TA的精华主题

TA的得分主题

发表于 2020-9-20 19:41 | 显示全部楼层
本帖最后由 丢丢表格 于 2020-9-20 19:59 编辑

如果你把IF改成IFS就跟简单了
=LET(x,SUMIFS($D:$D,$B:$B,$G20,$C:$C,H$1),
x*IFS(x>=100000,10%,x>50000,8%,x>30000,5%,x>10000,3%,x>=0,1%))
我会写成:
=MAX(TEXT(SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1)%%*{1,3,5,8,10}-{0,3.1,15.1,40.1,100},"[<]-9999")+{0,3.1,15.1,40.1,100})/1%


=LOOKUP(9^9,(0&SUMIFS($D:$D,$B:$B,$G2,$C:$C,H$1)%%*{1,3,5,8,10}-{0,3,15,40,100}-1%%)+{0,3,15,40,100}+1%%)/1%

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-9-20 20:17 | 显示全部楼层
丢丢表格 发表于 2020-9-20 19:41
如果你把IF改成IFS就跟简单了
=LET(x,SUMIFS($D:$D,$B:$B,$G20,$C:$C,H$1),x*IFS(x>=100000,10%,x>50000,8 ...

是的,就例子说这个LET函数而已。当然可以有其他解法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-9-20 20:18 | 显示全部楼层
shaowu459 发表于 2020-9-20 18:50
图片都失败了不过let一般版本还用不了啊,只能瞅瞅

我这里看,图片都在的呢。大家看看,能看到图片吗?

TA的精华主题

TA的得分主题

发表于 2020-9-20 20:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lgcmeli 发表于 2020-9-20 20:18
我这里看,图片都在的呢。大家看看,能看到图片吗?

图片没问题的,可以看的见,我用的QQ流览器(CHROME内核)

TA的精华主题

TA的得分主题

发表于 2020-9-20 20:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lgcmeli 发表于 2020-9-20 20:18
我这里看,图片都在的呢。大家看看,能看到图片吗?

IE11、win10看不到。
01.png
EXCEL以后真是越来越方便啦。...

TA的精华主题

TA的得分主题

发表于 2020-9-20 20:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
360极速能看到个别图片,不过360极速最近一段时间好像有问题......
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 02:53 , Processed in 0.049399 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表