软件下载 点击激活 软件下载

嘿,Let函数用过没?

HI,大家好,我是汪站长。
今天给大家聊一下LET函数。
 
话说很长时间以来,工作表函数最让人诟病的地方之一,就是它缺少编程语言中变量的表达形式,这使得嵌套函数的编写和阅读都显得非常烦琐而臃肿。
 
最终,微软设计了一种全新的工作表函数编写结构,也就是LET函数。
 
LET函数的基本语法如下:
 
全新函数LET ▼
=LET(变量名1,变量内容1,变量名2,变量内容2……,结果表达式)
举一个简单的例子。
=LET(a,1,b,2,a+b)
上面LET函数的意思是先定义了一个变量,其名为a,其值为1。又定义了一个变量b,其值为2。最后运行表达式a+b,也就返回变量a和变量b的合计值:3。
 
……
LET函数的出现改变了工作表函数的编写方式。它既避免了嵌套函数中同一函数重复出现、重复运算的问题,提高了函数的运算效率;同时,也使函数嵌套层次表达更清晰,使函数的编写和调试都简单了许多。
 
举两个例子,证明上面这段话的正确性。
 
嘿,Let函数用过没?
 
 
1,简化公式
 
 
先举一个简化公式,避免相同函数重复运算的小栗子。
 
嘿,Let函数用过没?
 
以上图所示数据为例,需要根据A:B的成绩明细,查询D列人名的成绩;如果成绩大于等于60,则返回实际成绩,否则返回字符串”不及格”。
 
通常而言,我们会编写函数公式如下:
 
=IF(VLOOKUP(D2,A:B,2,0)>=60,
    VLOOKUP(D2,A:B,2,0),
    “不及格”
)
使用VLOOKUP(D2,A:B,2,0)查询D2人名的成绩,然后用IF函数判断查询结果是否符合要求。
 
在这个公式中,
VLOOKUP(D2,A:B,2,0)
出现了2次,也运行了2次。
 
如果使用LET函数可以避免重复运算的问题。
=LET(    查询,VLOOKUP(D2,A:B,2,0),    IF(查询>=60,查询,"查无"))
第2行代码是一个变量,名字为查询,内容是
VLOOKUP(D2,A:B,2,0)。
 
第3行代码判断变量查询的值是否大于60,并根据判断结果返回对应值。
 
在这个LET函数中,
VLOOKUP(D2,A:B,2,0)
只运行了一次。运行完成后,系统将运算结果赋值给变量查询,在之后使用中,系统直接取该变量的值,而不会造成函数重复运算。
 
需要说明的是,在LET未出现之前,我们通常使用TEXT函数来规避重复运算的问题。
 
=TEXT(VLOOKUP(D2,A:B,2,0),"[>60]0;;不及格")
但TEXT函数返回的结果是文本值,这对结果数据的聚合处理,比如求和、求平均值、最大值等造成了很大麻烦,毕竟聚合函数基本都会忽略文本数值👇
 
嘿,Let函数用过没?
 
2,层次和调试
 
再举一个例子,说明LET函数如何使复杂嵌套函数的表达层次更清晰,同时编写和调试也更简单的。
 
如下图所示,有多张工作表,名字分别为财务部、销售部、IT部等,每张工作表的A列均为人名,B列为成绩。
 
嘿,Let函数用过没?
 
现在需要查询下图所示A列指定人名的成绩。
 
嘿,Let函数用过没?
简单而言,这是一个典型的多工作表数据查询案例。我们并不知道A列的人名具体出现在哪张工作表中,这需要函数嵌套来实现。
 
参考解法如下:
 
普通函数公式 ▼
=IFERROR(VLOOKUP(A2,INDIRECT(LOOKUP(1,0/COUNTIF(INDIRECT({“财务部”,”销售部”,”IT部”}&”!a:a”),A2),{“财务部”,”销售部”,”IT部”}&”!a:b”)),2,0),”查无”)
嘿,Let函数用过没?
该公式嵌套了6个函数,对于普通函数水平的朋友来说,无论是阅读理解,还是编写调试,都不容易。嵌套函数,它的计算顺序是由内而外的,这其实并不符合人类正常的思维方式,我们习惯的思维方向是从上到下。
 
嘿,Let函数用过没?
 
换用LET函数来表达:
 
公式看不全可以左右拖动..
=LET(    _工作表,{"财务部","销售部","IT部"},    _人名出现次数,COUNTIF(INDIRECT(_工作表&"!a:a"),A2),   _可用工作表,LOOKUP(1,0/_人名出现次数,_工作表),    _查询区域,INDIRECT(_可用工作表&"!a:b"),    _查询,VLOOKUP(A2,_查询区域,2,0),    _结果容错,IFERROR(_查询,"查无"),    _结果容错)
第2行代码定义了一个变量_工作表,内容是一个工作表名称构成的常量数组{“财务部”,”销售部”,”IT部”}
 
第3行代码使用COUNTIF函数计算A2人名在每个工作表A列出现的次数,赋值变量_人名出现次数
 
第4行代码使用LOOKUP函数,查询出现A2人名的工作表名称,赋值变量_可用工作表
 
第5行代码使用INDIRECT函数构建目标工作表查询区域的引用,赋值变量_查询区域
 
第6行代码使用VLOOKUP函数查询A2人名的成绩,赋值变量_查询
 
第7行代码使用IFERROR函数对VLOOKUP查无结果的情况进行容错。
 
第8行代码返回计算结果。
 
摊手,你看,每一行公式的运行目的都很明确,它的计算顺序是从上而下的,层次因此而清晰,也更有利于大家对公式的阅读、编写和调试。
 
……
 
有朋友可能会好奇,为什么变量名称前面增加了一个下划线_
 
摊手,这并不是必须的,但是它是一个良好的个人习惯。它的好处有两个,一个是阅读公式时快速识别是否变量,另外一个,当我们在LET函数中输入下划线_,系统就会自动弹出一个由变量名称组成的下拉列表,由此我们可以快速选中目标变量,提高函数编写效率。
 
嘿,Let函数用过没?
除此之外,在LET函数后面的参数,可以调用前面定义的任意变量。比如,在以上公式中,我们定义了6个变量。在第8行代码,我们可以调用前面的任意变量——这极大提高了我们函数调试的效率。
 
换句话来说,如果公式最终返回的结果和我们预设不相符,我们可以快速分步查看每一个变量的运行结果,查找具体问题所在。
 
以下动画演示了如何查看A列人名所在工作表名等变量运算结果:
 
嘿,Let函数用过没?
有些朋友会喜欢使用a、b、c这样单纯的字母去表达变量名称,通常并不推荐这么做,原因是在很多情况下,字母容易和单元格引用(例如A1)冲突。而使用_a、_b、_c完全可以避免这类问题。
 
……
 
除此之外,当公式的运算参数发生了变化,比如,由查询“财务部”,”销售部”,”IT部”三张工作表,变成了查询“财务部”,”销售部”,”IT部”,“生产部”四张工作表,我们只需要调整公式中的变量_工作表的内容表达式即可。这就很明显提高了代码维护的效率。
 
公式看不全可以左右拖动..
=LET(    _工作表,{"财务部","销售部","IT部","生产部"},    _人名出现次数,COUNTIF(INDIRECT(_工作表&"!a:a"),A2),   _可用工作表,LOOKUP(1,0/_人名出现次数,_工作表),    _查询区域,INDIRECT(_可用工作表&"!a:b"),    _查询,VLOOKUP(A2,_查询区域,2,0),    _结果容错,IFERROR(_查询,"查无"),    _结果容错)
小贴士:
 
❶ 在函数编写过程中,按<ALT+Enter>组合键可以为公式换行,公式换行并不妨碍公式运算。
 
❷ 一个LET函数定义的变量,只能在当前单元格的公式中使用;如需多个单元格公式使用相同变量,应该使用「定义名称」功能
 
❸ LET函数和「定义名称」功能很像,但「定义名称」的函数编写和调试都非常弱(渣渣灰);不过,定义名称这家伙可以搭配LAMBDA函数,实现通过工作表函数制作自定义函数——关于这,我们下期再聊咯。
 
 LET函数目前只存在于Excel2021及MS365版本中。
(▼へ▼メ)
没了,今天分享的内容就这些,更多表格技巧欢迎扫码关注我们。

网络技巧:家庭宽带使用小常识,值得收藏
END
网络技巧:家庭宽带使用小常识,值得收藏

往期推荐
1. Office365/2021/2019/2016/2013/2010官方永久激活密钥(可绑定账号)
2.  软件库(软件下载)
3.  CorelDRAW 2021破解版下载&安装步骤
4.  Google Earth Pro 7.3 |(谷歌地球)安装教程
5.  最新行政区划、乡镇级、村级shp矢量地图、2022道路、水系、建筑轮廓
嘿,Let函数用过没?
Office自学网公众号
嘿,Let函数用过没?
Office自学网客服

打开微信扫一扫,Office自学网

专注分享软件安装和视频教程,让你一号在手,办公无忧!

给TA打赏
共{{data.count}}人
人已打赏
办公技巧

天天用Excel,你会用 Ctrl+K 吗?

2024-12-7 15:51:29

办公技巧

有朋友询问如何为表格隔行填充色,那就聊5毛钱的

2024-12-9 14:40:30

文章版权声明 1、本网站名称:office自学网
2、本站永久网址:https://www.officezxw.com/
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ:1241926466进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索