前两天帮一个客户改报价单模板,打开文件我就头大——一个单元格里的公式长达六行,反复算含税单价、折扣价、运费分摊,同一个计算出现了四五次。
客户说:"这个表一超过500行就卡,而且我想改一个税率,得把公式里所有地方都找出来改,上次改漏了一个,给客户报错了价。"
这就是典型的中小型Excel"技术债",公式能跑,但没人敢动。
LET函数解决什么问题
Excel里有个常见问题:同一个中间值,在公式里反复计算。
比如算"含税总价",你得先算"含税单价 = 单价×(1+税率)",然后用"含税单价×数量"得到总价。
没有LET的话,表格里每个相关单元格都要完整写一遍 单价×(1+税率)×数量,表格大了,每个单元格都在重复算 单价×(1+税率) 这一步。
有LET的话,你先定义变量,后面直接引用,同一个计算只跑一次,公式也好读得多。
基本写法
=LET(变量名1, 值或计算1, 变量名2, 值或计算2, ..., 最终计算)具体例子,算报价单里的一行:
=LET( 单价, A2, 数量, B2, 税率, 0.13, 运费, C2, 含税单价, 单价 * (1+税率), 小计, 含税单价 * 数量, 合计, 小计 + 运费, 合计)最外面那个合计是返回值,LET函数拿前面定义好的变量算最后结果。
对比传统写法:
=A2*(1+0.13)*B2 + C2一个还好,如果"含税单价"要在三四个地方用到,传统写法每个都要重写一遍 A2*(1+0.13),改税率的时候得改三四个地方,漏一个就是事故。
实际场景:报价单模板
做报价单最头疼的是:客户要求改税率(比如从13%调到9%),或者加一项"折扣率",公式里到处都是要改的地方。
用LET写报价单的核心计算,把所有"可调参数"都定义成变量,放在公式最前面:
=LET( 单价, A2, 数量, B2, 税率, 0.13, 折扣率, D2, 运费, E2, 含税单价, 单价 * (1+税率) * (1-折扣率), 总价, 含税单价 * 数量 + 运费, 总价)以后税率改成9%,只要改一个地方(税率, 0.09),全文所有用到这个变量的计算全部跟着变。
什么版本能用
• Excel 2021 及以后版本 ✅ • Microsoft 365 ✅ • WPS Office 最新版(2024以后)✅ • Excel 2019 及更早版本 ❌ 不支持
如果你用的是 Microsoft 365,或者公司刚采购了新电脑,Excel 2021 一般自带,不用额外操作。WPS 的话,2024年以后的版本才支持 LET,更早的版本用不了。
性能有帮助吗
表格几百行的时候区别不大,几千行、公式到处引用的场景,重算速度快不少。但说实话,大多数中小企业用 Excel 的场景,性能不是最大问题,公式可读性才是——公式看不懂,改不动,出错了找不到原因。
LET 最大的价值是变量名比 A2*(1+0.13)*B2+C2 好懂多了,换个人来维护也看得懂。
老版本Excel怎么办
如果公司还在用 Excel 2016 或更早版本,LET函数用不了。有个替代方案:名称管理器。
在【公式】→【名称管理器】里,定义一个名字叫"含税单价",引用位置填 =Sheet1!$A$2*(1+0.13),然后在单元格里就可以直接写 =含税单价*B2。
这种方法比LET难维护,但比直接写一长串公式好读一点。最根本的解决方案还是升级Office版本。
下一步可以学什么
LET函数搞懂之后,可以看看LAMBDA函数,它能让你自定义一个可复用的函数,比如"计算含税价"写成一个公式,全表格都能调用,比LET更强大。下次有机会再细讲。
我是常大虾,做了多年中小企业IT运维,这些技巧都是日常帮客户干活时攒下来的,觉得有用转发给同事看看。
夜雨聆风