
在 Excel 中如果只是引用一个确定的单元格例如D63直接在公式中多次使用并不会带来问题。该引用本身已经是一个明确且高效的定位方式计算开销也很低。因此在静态引用的情况下没有必要对其进行额外优化。但在实际业务中单元格的位置往往并不是固定的。例如在按行填充公式时需要始终获取“当前行的上一行 D 列”的值。这种需求无法通过固定写死的D63来实现而必须借助ROW()、INDIRECT()或INDEX()等函数进行动态计算例如INDIRECT(DROW()-1)或INDEX(D:D,ROW()-1)一旦引入这种“动态定位”的写法如果在同一个公式中多次使用该表达式就会带来新的问题表达式本身计算成本较高尤其是INDIRECT作为易失函数重复调用会增加不必要的性能开销同时也让公式变得更加冗长和难以维护。例如直接展开写法可能类似于IF(INDEX(D:D,ROW()-1)0,,IF(INDEX(D:D,ROW()-1)0,负,)) ...此时同一个动态表达式被重复计算多次既影响性能也降低可读性。为了解决这一问题可以使用LET函数将动态计算的结果缓存为一个变量LET( v,INDEX(D:D,ROW()-1), IF(v0,, IF(v0,负,) TEXT(INT(ABS(v)),[dbnum2])元 IF( AND(MOD(INT(ABS(v)*10),10)0,MOD(INT(ABS(v)*100),10)0), 整, IF(MOD(INT(ABS(v)*10),10)0,零,) IF(MOD(INT(ABS(v)*10),10)0,,TEXT(MOD(INT(ABS(v)*10),10),[dbnum2])角) IF(MOD(INT(ABS(v)*100),10)0,,TEXT(MOD(INT(ABS(v)*100),10),[dbnum2])分) ) ) )在这个写法中INDEX(D:D,ROW()-1)只计算一次并赋值给变量v后续所有逻辑都基于v展开。这种方式的价值并不在于替代简单的单元格引用而是在“必须使用动态计算”的前提下对公式进行结构化优化。它带来的优势主要体现在三个方面减少重复计算动态表达式只执行一次显著降低计算成本提升可读性通过变量命名使公式结构更加清晰增强可维护性调整引用逻辑时只需修改变量定义部分因此可以将LET的使用理解为当公式中出现“需要重复使用的复杂或动态表达式”时通过变量机制对其进行抽象和复用从而实现性能与可读性的双重优化。END