用excel的let函数可以简化复杂公式:核心思路是把公式里反复用到的计算先命名成变量,最后直接拿这些变量做最终计算就行。不管是套了好几层的if、反复调用的vlookup、match、rank,还是中间判断特别多的公式,用它改完计算结果完全不变,公式短了一大截,查错也方便。

LET的基础写法是 =LET(变量名,变量值,计算结果)。如果要定义多个变量,就顺着按「变量名、变量值」的格式成对往后加,最后一个参数必须是你要最终返回的计算结果。目前只有Excel 2021和Microsoft 365原生支持LET函数,要是你用旧版Excel或者部分版本的WPS表格,输完公式提示名称错误,先检查下你的软件支不支持这个函数。
第一步:先找出公式里重复出现的计算
打开要优化的表格,先扫一眼公式栏,找里面重复出现的片段。比如同一个 MATCH、VLOOKUP、RANK,或者同一段判断逻辑被写了两三遍,这部分就适合用LET优化。别上来就把整条公式全删了重写,先把「重复写、读着绕、手滑容易改错」的片段挑出来就行。

拿最常见的查询类公式举例,传统写法经常会在一个单元格里同时写 INDEX 和两个 MATCH。用LET改写的时候,可以先把整张数据区域命名为 DATA,行匹配结果命名为 x,列匹配结果命名为 y,最后直接写 INDEX(DATA,x,y) 就行。之后要查匹配逻辑,不用再在一长串嵌套函数里来回翻找配对的括号了。
第二步:按“变量名、变量值”写入 LET
在目标单元格输入 =LET(,先写第一个变量的名字,后面跟上它对应的计算式。比如要把排名结果存成变量,直接写成 =LET(x,RANK(F4,$F$4:$F$13),IFS(x 就可以,这里的 <code>x 就直接代表 RANK(F4,$F$4:$F$13) 的计算结果。

变量名尽量短但要能看懂,刚上手练习的时候用 x、y 没问题,正式给别人用的表格更建议用 scoreRank、rowNo、colNo 这类见名知意的名字。注意变量名不能和单元格地址重名,比如别把变量起名叫 A1 或者 C5。
第三步:把嵌套公式替换成变量
所有变量定义完,最后一段的计算逻辑里尽量只留和业务相关的判断就行。原来公式里反复出现的 RANK(F4,$F:$F),在LET的最终计算部分统一换成 x;之前重复写的 MATCH(D15,人员,0),直接换成你之前定义好的 x 或者 rowNo。替换完你会发现,公式从之前的多层函数堆在一起,变成了「先定义、后计算」的清晰结构。

LET和Excel自带的「名称管理器」功能有点像,都是给一段计算内容起别名。区别是名称管理器定义的名字一般是工作簿或者工作表全局生效,LET的变量只在当前这个公式里有用。只是想单独把一个公式写得更清楚,用LET更轻量;如果好几个公式都要共用同一段区域或者同一条规则,再考虑用名称管理器。
第四步:用 LET 替代临时辅助列
很多复杂表格习惯先建一堆辅助列,最后让最终公式直接引用辅助列的结果。用LET可以把一部分辅助列的逻辑直接收进同一个公式里,比如先计算「是否属于新分组」,再根据结果返回对应编号或者空值。这样表格界面会清爽很多,也能避免之后有人误删辅助列,导致整个公式崩掉的问题。

不过也不用硬用LET把所有辅助列都删掉。如果中间计算过程需要人工核对、要发给同事看,或者后续还要基于这些结果做排序筛选,留着辅助列反而更稳妥。LET更适合把「只服务当前公式、反复调用、之后不需要单独展示」的中间计算收进去。
第五步:改完后核对结果和括号
LET公式写完之后,别只看第一行结果对不对,拉几行和原来的公式结果挨个对比下。再重点检查三个地方:所有变量是不是都按「名字+值」成对写的,最后一个参数是不是你要返回的结果,文本判断里的引号有没有写全。如果公式返回 #NAME? 错误,大概率是变量名写错了、软件不支持LET,或者变量名不小心和单元格地址重名了。
实际改复杂公式的时候,可以先把原公式复制到旁边单元格留底,再逐段替换成LET写法。确认新旧两个公式算出来的结果完全一致,再把LET公式向下批量填充。这样既有原公式当对照,哪一步替换出了问题也很容易定位。











