上一篇解决的是“公式里的引用该不该跟着公式走”。可引用写得再对,如果判断本身写错了,结果照样是错的——Excel 里做判断的核心工具就是 IF。这篇讲清楚三件事:IF 的三个空分别放什么,嵌套 IF 做分段判断时为什么条件顺序不能乱,以及数字被存成文本时为什么会让判断全错。

它们和上一篇有直接关系:IF 的第一个空里通常要引用别的格子,比如分数线、税率这种只写在一个单元格里的值,往下拖的时候同样要用 $ 锁住。

IF 只有三个空

语法长这样:

1=IF(逻辑判断, 成立时返回什么, 不成立时返回什么)

看两个官方示例 1:

1=IF(C2>B2,"超出预算","正常")
2=IF(C2>B2,C2-B2,0)

第一个空不是“问句”,而是一个 能算出 TRUE 或 FALSE 的表达式。C2>B2 本身就是个算式,它的结果只有两种:TRUE 或 FALSE。IF 拿到这个结果,再决定返回第二个空还是第三个空。

第二、第三个空可以直接写一个值,也可以写另一个公式(第二个例子里写的是 C2-B2,一个减法)。

两个容易卡住的小地方:

  • 返回 文本 必须加双引号,写成 "正常";返回数字不用。
  • 第三个空 可以省略,但省略后不成立时返回的是 FALSE,单元格里会显示“FALSE”这几个字母。想让不成立时看上去是空的,要写一对紧挨着的英文双引号 "",它表示“空字符串”。这两个别混,一个显示 FALSE,一个是真空白。

逻辑判断这一格怎么写才不出错

比较运算符一共六个:= 等于、> 大于、< 小于、>= 大于等于、<= 小于等于、<> 不等于。写的时候注意这几点:

  • 判断等于只写一个等号。=IF(A2=B2,...) 对,写成 A2==B2 Excel 不认。
  • >= 和 > 差一个边界,结果差一整档人。题目写“60 分及以上”,就写 B2>=60;写“超过 60 分”,才写 B2>60。这是分段判断丢分最集中的地方。
  • 文本比较要加双引号,而且必须是 英文半角 的 "。中文输入法状态下的“双引号”是全角字符,Excel 不认它,写进公式里通常会直接提示公式有问题。
  • 不要连写不等式。=IF(60<B2<90,...) 是错的:Excel 会先把 60<B2 算成一个 TRUE 或 FALSE,再拿这个结果去和 90 比,结果永远是 TRUE,判断等于没用。

嵌套 IF:把“不成立”的那一格换成另一个 IF

要分的档超过两段,就得在第三个空里再放一个 IF,这叫 嵌套。成绩分四档:

1=IF(B2>=90,"优秀",IF(B2>=80,"良好",IF(B2>=60,"及格","不及格")))

读它的方式是从外往里走:

  1. 先问 B2>=90。成立 → 返回“优秀”,结束。
  2. 不成立 → 说明已经排除了 90 分以上的人,只剩 90 分以下的,再问 B2>=80。
  3. 再不成立 → 说明连 80 都不到,再问 B2>=60。
  4. 最后一个逗号后面直接写“不及格”,那是所有条件都不成立时的兜底结果。

这里有一条必须记住的机制:判断是从外往里走的,只要某一层成立,函数立刻返回那一层的结果,里面剩下的条件根本不看。 分 nn 个等级,就要写 n−1n-1 个 IF;外层 IF 的第三个空里,装的是下一个 IF。

顺序写反了会怎样

把上面的公式改成从小到大问:

1=IF(B2>=60,"及格",IF(B2>=80,"良好",IF(B2>=90,"优秀","")))

拿 85 分试一下:第一层 85>=60 成立,函数立刻返回“及格”,后面两层 一次都不会执行。整列填下来只会出现“及格”和“不及格”两种结果,“良好”和“优秀”永远轮不到——哪怕某人考了 100 分,也是“及格”。

微软文档里给了同性质的销售提成例子:档位从低往高写,12500 的销售额被“大于 5000”这一条先拦住,返回 10% 就停住了,正确的档位根本没机会执行 2。

“从小到大”到底指什么

这里最容易记混:有老师说要从大到小,有的例题又像是从小到大。其实两种说法是一件事的两面,取决于你用哪种符号。

写法一,用 >=,从高往低问:

1=IF(B2>=90,"优秀",IF(B2>=80,"良好",IF(B2>=60,"及格","不及格")))

写法二,用 <,从低往高问:

1=IF(B2<60,"不及格",IF(B2<80,"及格",IF(B2<90,"良好","优秀")))

两条都正确,结果一模一样。所以“从小到大”这个说法,指的其实是写法二里 门槛值从 60 排到 90 这件事;换成 >= 写法,门槛值就是倒着排的。

真正通用的规则只有一条:

每一层问的那个条件,必须是“当前还没有被排除掉的那段区间”里最靠边的那一端。

  • 用 >= 问,就是从 最高档往下推:先问 >=90,剩下的是 90 分以下的人,再问 >=80……
  • 用 < 问,就是从 最低档往上推:先问 <60,剩下的是 60 分以上的人,再问 <80……

把 >=60 放在第一层,问题不在于数字小,而在于 >=60 是这几档里 最宽、最容易成立 的那个条件,它会把所有人先拦住,方向就走反了。同理,<90 要是放在第一层,也会把 60 分以下的人先归成“良好”。

考场上的稳妥做法:先按 >= 从高到低写一遍,然后拿几个贴着门槛的分数在心里过一遍——85、90、59、60,看它们分别落进哪一层。

数字被存成文本,判断会整列出错

这是最隐蔽的一个坑。Excel 比较两个值时,先看类型,再比大小;类型的先后顺序是 数字 < 文本 < 逻辑值(FALSE < TRUE) 34。换句话说,只要有一边是文本,它就比任何数字都大。="5">60 的结果是 TRUE 3。

于是麻烦来了:成绩列如果是从别处导入的,或者单元格被提前设成了文本格式,A2 里看着是 5,实际是文本 "5",那么 =IF(A2>=60,"及格","不及格") 会把整列人都判成“及格”,5 分的也及格。

认出它有三个办法:数字默认靠右对齐、文本默认靠左对齐;单元格左上角有绿色小三角(Excel 在提醒“这看着像数字,其实是文本”);用 =ISTEXT(A2),返回 TRUE 就是文本。

改回来:选中整列 → 数据 → 分列 → 什么都不动,一路点到“完成”,Excel 会按当前内容重新识别类型;或者另起一列用 =VALUE(A2) 把它转成真数字。类型改对之后,公式不用动,结果就正常了。

动手前的检查清单

  • 三个空都填对了吗?第三空是 ""(空白)还是干脆省略了(会显示 FALSE)?
  • 双引号是英文半角吗?
  • 写的是 >= 还是 >?题目原话是“及以上”还是“超过”?
  • 每一层问的条件,是最严、最窄的那一档开始,逐层往外放宽吗?拿 89、90、59、60 试一遍。
  • 公式里的分数线、税率这类固定格子,$ 加了吗?
  • 新版 Excel 有 IFS 函数,能把嵌套 IF 写平:=IFS(B2>=90,"优秀",B2>=80,"良好",B2>=60,"及格",TRUE,"不及格") 5。但它只存在于 Office 2019 和 Microsoft 365 里,一次性买断的 Office 2016 根本没这个函数,写进去只会得到 #NAME? 6。考试环境版本不确定,嵌套 IF 才是最稳的写法——先把上面这些写对。