📌 阶段三 · 函数核心 · 第8讲 IF函数逻辑判断 · 约 45 分钟

给库存台账装上报警器:低于安全库存亮「补货」,库存归零亮「缺货」

学习目标

  • 会写 IF 函数的单条件判断,说清三个参数各是什么
  • 会用 IF 嵌套处理三种及以上情况,括号成对不遗漏
  • 会用并列多个 IF 相加(数值)或相连 &(文本)替代深嵌套
  • 会用 AND / OR 组合多个条件再交给 IF 判断
  • 会用 ISERROR(或 IFERROR)兜住公式错误,让台账不出现 #DIV/0!

知识点讲解

IF 函数:让表格学会「二选一」

IF 是 Excel 里最重要的函数,没有之一——它让表格有了「判断力」。

语法:IF(logical_test, [value_if_true], [value_if_false]),翻译成人话:

=IF(条件, 条件成立时返回A, 条件不成立时返回B)

参数 1 是一个条件判断,结果必须是逻辑值 TRUE 或 FALSE(第 7 讲的比较运算符在这里派上用场);参数 2 是 TRUE 时返回的值;参数 3 是 FALSE 时返回的值。

例子:=IF(H2>100,"库存充足","偏低")——H2 的当前库存超过 100 显示「库存充足」,否则显示「偏低」。文本返回值必须加英文双引号,数字则直接写。

=IF(H2>100,"库存充足","偏低")

参数1 H2>100 是判断条件;参数2 成立时返回文本「库存充足」;参数3 不成立时返回「偏低」。文本必须用英文双引号。

IF 嵌套:三种以上情况逐层判断

情况超过两种时,把另一个 IF 塞进参数 3 里,形成嵌套:

=IF(条件1, 成立返回A, IF(条件2, 成立返回B, 都不成立返回C))

判断按顺序进行:先看条件 1,满足就直接返回 A,后面的不再看;不满足才进第二层。

库存状态就是标准的三层场景:先判「库存是不是 0」,是就「缺货」;不是再判「是否低于安全库存」,是就「补货」;都不是才「正常」。

写嵌套最容易犯的错是括号不配对——写一个 IF 就顺手补一个右括号,写完全数一遍括号再回车。

=IF(H2=0,"缺货",IF(H2<=I2,"补货","正常"))

H2 当前库存、I2 安全库存。第一层判断库存是否为 0;不为 0 进入第二层判断是否不高于安全库存。这正是期末成品台账「库存状态」列的公式。

别把 IF 嵌成迷宫:并列更清爽

IF 嵌套超过四五层,就该停下来想想:是不是用错函数了?很多多层判断其实该交给 VLOOKUP(第 11 讲)、LOOKUP(第 18 讲)这些查表函数。

确实要写多层时,还可以并列写多个 IF 再拼起来,比嵌套好读:

返回值是数字的,用加号连接:=IF(G6="A级",10000,0)+IF(G6="B级",9000,0)+IF(G6="C级",8000,0)——不满足的分支返回 0,加了等于没加,结果不受影响。

返回值是文本的,用 & 连接:=IF(...)&IF(...)&...——不满足的分支返回空文本,连上去等于没连。

这种写法每个 IF 都是独立的单条件,排查错误容易得多。

=IF(B2="纸品",1,0)+IF(B2="办公文具",1,0)+IF(B2="办公设备",1,0)

判断类别列 B2 属于三大类之一,属哪个哪支返回 1,其余返回 0,相加结果要么 1(合法类别)要么 0(非法类别),可当类别合法性校验用。

AND 函数:所有条件同时成立

IF 的参数 1 只能放一个条件,可现实经常是「既要…又要…」。AND 函数把多个条件打包:AND(条件1,条件2,条件3...),全部为真整体才为真,有一个假就是假。

把 AND 塞进 IF 的参数 1,就实现了多条件同判。讲义例子:=IF(AND(A3="男",B3>=60),1000,0)——性别是男且年龄不小于 60 才发 1000 元。

进销存场景:=IF(AND(H2<=I2,H2>0),"低位运行","安全")——当前库存不高于安全库存、且还没到 0,两个条件同时成立才叫「低位运行」,恰好在补货线上但没断货。

=IF(AND(H2<=I2,H2>0),"低位运行","安全")

AND 里两个条件(库存不高于安全库存、库存大于 0)必须同时为真,IF 才返回「低位运行」,否则返回「安全」。

OR 函数:满足任意一个就成立

OR 与 AND 相对,表示「或」:OR(条件1,条件2,条件3...),只要有一个为真整体就为真。

讲义例子:=IF(OR(B12>60,B12<40),1000,0)——年龄大于 60 或小于 40 都算,两个条件沾一个就行。

AND 和 OR 还可以互相嵌套做复杂逻辑,比如:=IF(OR(AND(A20="男",B20>=60),AND(A20="女",B20<=40)),1000,0)——「男性且年满 60」或「女性且不超过 40」,两类人满足其一即可。

进销存场景:=IF(OR(H2=0,H2<=I2),"需补货","正常")——库存归零或低于安全库存,任一情况出现就报警,效果和嵌套版等价,有时更直观。

=IF(OR(H2=0,H2<=I2),"需补货","正常")

OR 的两个条件(库存为 0、库存不高于安全库存)满足任意一个,就返回「需补货」。与两层嵌套 IF 异曲同工,条件独立时用 OR 更好读。

=IF(OR(AND(E2="月结30天",B2>=10000),E2="货到付款"),"重点跟进","普通")

AND/OR 嵌套示例:月结30天且单笔金额过万,或者货到付款客户,都标记「重点跟进」。

公式报错兜底:ISERROR(与新版 IFERROR)

公式难免出错:除数为 0、引用的格子是空文本……错误值会像瘟疫一样传染后续统计(SUM 遇到错误值整个变错)。

处理思路是用 IF 包住判断:=IF(ISERROR(A),0,A)——ISERROR 判断运算 A 是否出错,出错返回 0,正常就返回 A 本来的结果。为什么要填 0 而不是留着错误?因为 0 可以继续参与求和排名,错误值会让后面全部报废。

新版本 Excel 提供了更简洁的 IFERROR:=IFERROR(A,0),一句顶旧的写法,效果相同。本课程期末台账的周转天数等公式就用 IFERROR 兜底,两种写法都要认识。

=IF(ISERROR(H2/G2),0,H2/G2)

G2 为 0 时除法报 #DIV/0!,ISERROR 检测到错误就让 IF 返回 0,正常时返回商本身。等价的新写法:=IFERROR(H2/G2,0)

实战演练

本讲给库存台账装上「灵魂模块」——库存状态报警。真实的当前库存要到第 10 讲学完 SUMIF 才能算出,所以今天先用商品档案的「期初库存 vs 安全库存」做状态判断预演,公式逻辑与期末成品台账完全一致:库存归零亮「缺货」,低于安全库存亮「补货」,否则「正常」。第 10 讲只需把判断对象换成当前库存,报警器即告完工。

  1. 先来个单条件热身 — 切到商品档案,在 J1 输入表头「状态判断」,J2 输入 =IF(H2<=G2,"偏低","正常")(H 列期初库存、G 列安全库存),回车后双击填充柄填满整列。数一数显示「偏低」的有几个商品。
  2. 升级为三层嵌套 — 把 J2 改成嵌套版:=IF(H2=0,"缺货",IF(H2<=G2,"补货","正常")),下拉填充。写的时候每写一个 IF 立刻补一个右括号。故意把某行的期初库存临时改成 0,观察状态变「缺货」,改回来。
  3. AND 版精细判断 — 在 K1 输入「低位运行」,K2 输入 =IF(AND(H2<=G2,H2>0),"是","否"),下拉。对比 J 列:「补货」的行 K 列应该全是「是」——因为 AND 版多了一个「还没归零」的条件,缺货行会被排除。
  4. OR 版报警 — 在 L1 输入「需补货」,L2 输入 =IF(OR(H2=0,H2<=G2),"需补货","正常"),下拉。比较 L 列与 J 列:两列应该完全一致,体会 OR 写法与嵌套写法的等价关系。
  5. 并列 IF 拼说明文字 — 在 M1 输入「状态说明」,M2 输入文本并列版:=IF(H2=0,"库存已清零","")&IF(H2<=G2,"低于安全库存","")&IF(H2>G2,"库存充足",""),下拉。用 & 把多个独立 IF 的结果连起来,每行恰好拼出一句完整说明。
  6. ISERROR 兜底练习 — 在 N2 输入 =H2/G2(期初库存除以安全库存,一个「库存倍数」指标),如果有商品安全库存是 0,这一列会炸出 #DIV/0!。改成 =IF(ISERROR(H2/G2),0,H2/G2)(或新版 =IFERROR(H2/G2,0)),错误消失变 0。理解为什么兜底值要用 0:不污染后续求和。
  7. 验收与保存 — 用筛选快速核对:筛选 J 列=「缺货」,看是否恰好等于期初库存为 0 的行数。把练习列 J~N 保留(第 10 讲要把这套逻辑搬进台账),Ctrl+S 保存。至此报警器的电路已经接好,只差 SUMIF 这颗芯片。

在线练习

下面的表格可以直接编辑,照着演练步骤在本页练习;需要菜单操作的步骤请下载配套练习文件,在自己电脑的 Excel 中完成。

表格加载中…

验收清单

逐项自查,全部通过即完成本讲:

  • ☐ 能默写 IF 的三个参数:条件、成立返回值、不成立返回值
  • ☐ 状态判断列包含「缺货/补货/正常」三种结果,括号成对无报错
  • ☐ AND 版排除了缺货行,OR 版与嵌套版结果一致
  • ☐ 练过并列 IF:数值相加、文本用 & 连接两种写法
  • ☐ 除法错误被 ISERROR/IFERROR 兜成 0,不再出现 #DIV/0!
  • ☐ 知道第 10 讲只需把判断对象换成当前库存,台账报警即完工