IF、IFS、AND、OR、IFERROR:条件判断与嵌套公式

适用场景

按分数判断及格、按销售额算提成、按日期判断是否逾期、把错误值替换成空值。IF 是最基础的逻辑函数,但嵌套太多会难维护;能拆成辅助列或改用 IFS、XLOOKUP、SWITCH 时,优先选更易读的写法。

IF 的基本用法

=IF(条件, 条件为真时的结果, 条件为假时的结果)
=IF(A2>=60,"及格","不及格")
=IF(B2="","未填",B2*1.13)

嵌套 IF

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

嵌套顺序要从严格到宽松,否则后面的条件永远轮不到。例如先判断 >=60 再判断 >=90,90 分也会先被“及格”截住。

Excel 最多允许 64 层嵌套,但实际超过 3–4 层就该考虑换写法。把判断依据做成一张对照表,用 XLOOKUP 近似匹配或 VLOOKUP 查表,通常比长嵌套更好维护。

IFS 与 SWITCH

IFS

=IFS(A2>=90,"优秀",A2>=80,"良好",A2>=60,"及格",TRUE,"不及格")

IFS 按顺序判断,返回第一个为真的结果。最后的 TRUE,"不及格" 是兜底;如果没有条件命中且没有兜底,返回 #N/A。IFS 在 Excel 2019/365 中可用,Excel 2016 及更早版本没有。

SWITCH

=SWITCH(A2,"A","华东","B","华南","C","华北","其他")

SWITCH 适合“一个值对应一个结果”的等值判断,不适合大于、小于这类范围判断。

AND、OR、NOT

函数 作用 示例
AND 所有条件都为真 =AND(A2>=60,B2>=60)
OR 任意一个条件为真 =OR(A2="华东",A2="华南")
NOT 取反 =NOT(ISBLANK(A2))

组合示例:

=IF(AND(A2>=60,B2>=60),"双科及格","有不及格")
=IF(OR(C2="逾期",D2<0),"需要处理","正常")
=IF(NOT(ISBLANK(E2)),"已填","未填")

AND/OR 会计算所有参数,没有短路求值。参数里如果有 1/0 这类会产生 #DIV/0! 的表达式,即使前面的条件已经能决定结果,后面的错误仍可能冒出来;必要时用嵌套 IF 先挡掉错误。

IFERROR 与 IFNA

=IFERROR(VLOOKUP(A2,D:E,2,FALSE),"未找到")
=IFNA(VLOOKUP(A2,D:E,2,FALSE),"未找到")

常见组合

需求 公式
空值显示为 0 =IF(A2="",0,A2)
除以 0 时返回空 =IF(B2=0,"",A2/B2)
判断是否逾期 =IF(AND(B2<>"",B2<TODAY()),"逾期","正常")
按区间算提成 =IF(A2>=100000,A2*0.05,IF(A2>=50000,A2*0.03,A2*0.01))
多条件分类 =IFS(AND(A2="华东",B2>10000),"重点",A2="华东","普通",TRUE,"其他")

易错点

相关条目

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. =IF(A2>=60,"及格") 在 A2 为 50 时返回什么?
  2. IFERROR 和 IFNA 应该分别在什么阶段用?
  3. 嵌套 IF 判断分数段时,为什么要从高分往低分写?
答案
  1. 返回 FALSE,因为省略了第三个参数;要返回空文本应写 ""。
  2. 排查阶段用 IFNA 只处理找不到的情况,保留其他错误;最终报表可以用 IFERROR 统一兜底。
  3. 从低分往高分写时,低分条件会先命中,高分也会被归到低档;必须从严格条件往宽松条件写。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令