公式基础:运算符优先级、常见错误值逐个排

公式是 Excel 的心脏。会用函数的人分两种:一种写得对但不知道为什么对,一种出错了能自己排。这一篇把公式的底层规则和常见错误值讲透,后面所有函数篇都以此为地基。

公式的基本形态

所有公式都以等号 = 开头,由三类零件组成:运算符(+、-、、/、^、&)、引用(A1、表1[金额])、函数*(SUM、IF)。点击编辑栏左侧的 fx 可以看到「插入函数」向导,新手期靠它认识函数,熟练后直接手写。

一个典型公式:

=IF(AND(B2>=60,C2>=60),"及格","不及格")

外层 IF,内层 AND,引用两个单元格,返回两个文本之一。阅读公式的顺序是从最内层往外层读,跟剥洋葱一样。

单元格引用:相对、绝对与混合

拖动公式时引用怎么变化,是新手最容易翻车的地方。三种引用形态由 $ 符号控制,按 F4 可循环切换:

引用形态 写法 拖公式时的行为 典型场景
相对引用 A1 行列都跟着变 逐行套用的同类计算
绝对引用 $A$1 完全不动 税率、阈值、基准日期
混合引用 $A1 或 A$1 锁住一半 九九乘法表式的矩阵

记忆口诀:$ 在谁前面,谁就被冻住。查找公式里 VLOOKUP($A2,员工表!$A:$D,4,0) 就是混合+绝对的组合——查找值锁列($A2),查找区域全锁,这样拖到底既不串行也不跑区域。

判断该用哪种引用,最快的办法是「先拖一次试试」:拖完看结果错位,再决定锁行还是锁列。熟练之后,写公式时会直接预判:凡是引用参数表、映射表这类固定区域的,先按 F4 锁死。

运算符优先级

Excel 的运算顺序不是从左到右,而是按优先级。从高到低:

优先级 运算符 说明
1 :(冒号) 区域引用,如 A1:B2
2 ,(逗号) 联合引用
3 -(负号) 取负,如 -5
4 % 百分比
5 ^ 乘方
6 * / 乘除(同级从左到右)
7 + - 加减(同级从左到右)
8 & 文本连接
9 = < > <= >= <> 比较运算符,优先级最低

最容易踩的坑是比较运算符:=A1+B1>100 实际是 =(A1+B1)>100,先算加法再比较,这符合直觉;但 =A1>B1+1 就是先算 B1+1 再比较,因为算术运算优先于比较。还有一个高频陷阱:=-2^2 在 Excel 里等于 4 而不是 -4——负号的优先级高于乘方,想写负的平方要写成 -(2^2)。拿不准就加括号——括号是优先级最高的结构,多加括号不会错,只会让公式更清楚。

公式与格式的协作

公式算出来的结果,显示仍受单元格格式影响。金额结果设为两位小数、百分比结果设为百分比格式,都在 Ctrl+1 里完成。需要把数字嵌进文字(比如「本月完成率 92.5%」),要用 TEXT 函数控制格式:

="本月完成率 "&TEXT(B2,"0.0%")

直接用 & 连接会把小数点后一串 0 全带出来——0.925 连进句子变成「完成率 0.925」,领导和同事看着都会皱眉。格式与公式是两层:公式负责算,格式负责呈现,别让格式问题伪装成公式错误。

计算模式与性能直觉

打开自动计算时,每改一个单元格,全表公式全部重算。几千行的 SUMIFS 递归叠加,编辑时会感到明显卡顿。两条对策:

  1. 大批量录入或跑长公式前,公式选项卡→计算选项→改为「手动计算」,全部改完按 F9 一次性重算。
  2. 整列引用(如 D:D)在几万行表里会全表扫描,改成智能表或限定到实际数据区(如 D2:D5000),重算量立减。

这不是优化玄学,而是日常表格越做越大时必然会撞到的墙。早知道有这回事,撞墙时就知道往哪看。

常见错误值逐个排

错误值 含义 常见原因与解法
#DIV/0! 除以零 除数为 0 或空单元格;用 IF 或 IFERROR 兜底
#N/A 找不到匹配值 VLOOKUP/XLOOKUP 没找到;加 if_not_found 参数或 IFERROR
#VALUE! 类型不对 文本参与了算术运算;检查是否有文本型数字、空格
#REF! 引用失效 被引用的行列被删除;从备份恢复或用结构化引用避免
#NAME? 函数名/名称错误 拼错函数名、文本没加引号、中文引号;检查语法
#NUM! 数值无效 DATEDIF 开始晚于结束等;检查参数范围
#NULL! 区域交集为空 两个区域写法产生了空交集,通常漏写了逗号或冒号
##### 列宽不够 不是错误,拉宽列或改格式

#NAME? 有个高频肇因:公式里的文本引号用了中文全角引号,Excel 只认英文半角引号。从网页、聊天记录复制公式时尤其注意,粘进来先扫一眼引号形状。

排错工具箱

工具 操作 适合查什么
F9 局部求值 选中公式片段按 F9,Esc 退出 长公式里某一步的中间结果
公式求值 公式选项卡→公式求值 一步步执行,看哪步开始出错
追踪引用单元格 公式选项卡→追踪引用 数据来源画成线,看清依赖
错误检查 报错单元格旁的黄色叹号 「公式忽略相邻单元格」类线索

定位错误的顺序建议:先看错误值类型(锁定方向),再用公式求值找位置,最后用追踪引用确认数据源。这三步走完,九成报错都能定位到具体那一段。

举个 F9 查错的例子。某报表返回 #VALUE!,公式是 =SUMPRODUCT(B2:B10,C2:C10)。选中 C2:C10 按 F9,结果里混着文本型和数值两种元素——原来 C 列有些单元格是文本型数字,SUMPRODUCT 一乘就炸。定位到具体格子后,清洗或改引用都好办。F9 查完一定按 Esc 还原,否则公式里会被固化成静态结果。

让公式可维护

三个习惯:

  • 别把公式写成一万米长。超长公式用辅助列拆分,每列一个中间结果,出错能定位。
  • 给关键区域起名称(公式→定义名称),如「税率」,公式里写 =金额*税率 比 =金额*参数表!$B$1 可读十倍。
  • IFERROR 兜底但要克制。全表套 IFERROR 会掩盖真错误,通常只在最外层用:
=IFERROR(VLOOKUP(A2,员工表!$A:$C,3,FALSE),"未找到")

说到「让 AI 帮你写公式再自己逐层验证」,Claude Code 完全指南 里展示的协作方式值得借鉴:把需求描述清楚,让工具出初稿,人负责审。公式这东西,抄来的不理解,改的时候一定还债。

另外,如果你同时负责团队里的模板规范和维护文档,把这些「公式排错笔记」按场景归档,会在下一次排查时派上大用场——Obsidian 知识管理实战 讲的「以问题为中心记笔记」,正适合这种经验沉淀。

新手常见误区

  1. 在公式里直接写死数字。=B2*0.13 里的 0.13 明年变就惨了,放参数单元格再引用。
  2. 忽视 F2 编辑模式。在单元格里直接打字会覆盖别人的公式,先 F2 或看清状态栏。
  3. 公式报错就删了重写。先定位是哪一段出的错,删掉重写大概率复制同一个错误。
  4. 把「显示为 0」当成公式没算。很多 0 是引用到了真正的空单元格,顺藤摸瓜查来源。
  5. 漏写等号就开始敲函数。Excel 会把输入当作文本原样显示,新手对着不计算的公式茫然半天,其实只是开头少了 =。养成输入函数名前先按 = 的肌肉记忆。

小结

公式不难,难的是严谨:优先级靠括号兜底,错误值知道去哪找原因,长公式敢拆辅助列,引用形态在拖动前就规划好。这四件事养成习惯,后面所有函数篇都是在这个地基上盖楼。下一篇开始,我们正式进入函数部分,从逻辑函数讲起。

本章由 WorkBuddy 原创整理,函数行为以 Microsoft Excel 官方文档为准。