
IF函数怎么用:语法、条件判断与常见示例
IF 函数用于根据一个条件选择结果:条件成立时返回一种值,不成立时返回另一种值。它适合把“如果……就……否则……”这样的规则写进表格,例如判断成绩是否及格、根据金额划分等级、检查单元格是否为空,或按规则计算折扣。
本文以 Excel 和 Google 表格中的 IF 函数为主。两者的基本语法和常见用法相近,但区域设置、函数分隔符以及某些高级功能可能不同。以下示例默认公式使用英文函数名,并以逗号分隔参数;如果你的软件要求用分号分隔,请将公式中的逗号改成分号。
一、IF 函数的基本语法
Excel 和 Google 表格中的常见语法是:
=IF(logical_test, value_if_true, value_if_false)
logical_test:要判断的条件,例如A2>=60。value_if_true:条件成立时返回的值。value_if_false:条件不成立时返回的值。
第三个参数在语法中可以省略。省略时,条件不成立通常返回逻辑值 FALSE。为了让结果清楚、方便后续处理,一般建议明确写出第三个参数。
例如,判断 A2 的分数是否达到 60 分:
=IF(A2>=60,"及格","不及格")
当 A2 的值为 75 时,条件 A2>=60 成立,公式返回“及格”;当 A2 的值为 50 时,条件不成立,公式返回“不及格”。把公式填入其他行时,相对引用 A2 会随行号变化。
二、适合使用 IF 的场景
IF 适合表达一个有明确分支的规则。判断条件通常可以归纳为“满足某个比较或逻辑表达式,就返回结果 A;否则返回结果 B”。常见场景包括:
- 资格判断:分数是否及格、订单是否达到免运费门槛。
- 分类标记:库存是否不足、日期是否逾期、数据是否需要复核。
- 简单计算分支:按是否达到条件选择不同的费率或折扣。
- 缺失值处理:单元格为空时显示提示,否则显示原内容或计算结果。
如果规则包含多个并列条件,可以把 IF 与 AND、OR 等函数组合。如果要把大量区间映射为对应结果,嵌套很多层 IF 往往会难以维护,可以考虑查找表、IFS、SWITCH 或查找函数,具体取决于所用软件和版本。
三、条件判断中常用的运算符
logical_test 可以是比较表达式,也可以是返回 TRUE 或 FALSE 的逻辑函数。常见比较运算符如下:
=:等于<>:不等于>:大于<:小于>=:大于或等于<=:小于或等于
例如,检查 B2 是否等于“完成”:
=IF(B2="完成","已办结","处理中")
文本条件需要用英文双引号括起来。单元格引用本身不需要加引号;例如,A2>=60 是比较单元格的值,"A2>=60" 则是一个文本字符串,不会按条件表达式进行比较。
比较日期时,应确保单元格中的内容是可识别的日期值,而不是看起来像日期的普通文本。例如,用日期函数构造日期通常比依赖地区格式的日期文本更稳妥:
=IF(A2<DATE(2025,1,1),"早于 2025 年","2025 年及以后")
日期函数参数的顺序为年、月、日。不同地区设置可能影响直接输入日期常量的解析方式,因此在需要跨文件或跨地区使用时,优先确认单元格的数据类型和日期格式。
四、返回文本、数字和公式结果
IF 的两个结果参数可以是文本、数字、单元格引用,也可以是另一个计算表达式。返回文本时要加双引号,数字则不加引号。
根据分数返回文字:
=IF(C2>=90,"优秀","继续努力")
根据订单金额决定是否收取运费:
=IF(D2>=200,0,15)
其中,订单金额达到 200 时返回数字 0,否则返回数字 15。这里返回的是数值,可直接参与后续加减计算。如果写成 "0" 和 "15",结果会是文本,虽然表格软件有时会自动转换,但不应依赖这种隐式转换。
也可以让 IF 返回计算结果:
=IF(E2>=10,E2*0.9,E2)
这个公式表示数量达到 10 时按九折计算,否则按原值返回。若折扣规则需要同时考虑商品、日期、会员等级等多个因素,应先把规则拆分并验证清楚,再组合公式;不要为了压缩公式把所有业务逻辑塞进一个难以检查的表达式。
五、空白单元格的判断
常见写法是将单元格与空文本比较:
=IF(A2="","待填写","已填写")
这能处理真正空白的单元格,也通常能把公式返回空字符串 "" 的单元格视为未填写。若需要区分“从未输入内容”和“公式结果为空”,可以使用 ISBLANK 检查单元格是否真正为空:
=IF(ISBLANK(A2),"单元格为空","单元格中存在内容或公式")
两种判断含义不同:如果 A2 里有公式 =IF(B2=0,"",B2),它不是物理意义上的空单元格,但显示结果可能为空。因此,选用哪种写法取决于你要判断的是“看起来没有值”,还是“单元格确实没有内容”。
需要注意,包含空格的单元格并不等于空白。若数据可能带有前后空格,可以先用 TRIM 清理普通空格,再判断:
=IF(TRIM(A2)="","待填写","已填写")
TRIM 主要用于处理文本中的普通空格;对于从网页或其他系统复制来的特殊空白字符,可能还需要针对实际数据进行清理。
六、用 AND 和 OR 组合条件
需要多个条件同时成立时,可以使用 AND。以下公式要求分数达到 60 且出勤率达到 80%,两项都满足才判定为通过:
=IF(AND(B2>=60,C2>=80%),"通过","未通过")
如果满足多个条件中的任意一个即可,可以使用 OR。例如,员工属于“销售”部门,或者业绩达到 10000,就标记为重点跟进:
=IF(OR(A2="销售",B2>=10000),"重点跟进","常规跟进")
AND 和 OR 可以组合使用。下面的例子要求员工属于销售部门,并且业绩达到 10000 或客户评分达到 4.8:
=IF(AND(A2="销售",OR(B2>=10000,C2>=4.8)),"重点跟进","常规跟进")
编写复合条件时,可以先用文字描述规则,再为每个条件分别加括号检查。例如:部门是销售 AND(业绩达标 OR 评分达标)。这样更容易发现逻辑关系写反的问题。
七、多个结果:嵌套 IF 与其他函数
如果结果不止两种,可以将一个 IF 放进另一个 IF 的结果参数中。下面按分数给出四档评价:
=IF(A2>=90,"优秀",IF(A2>=75,"良好",IF(A2>=60,"及格","不及格")))
判断顺序很重要:公式先检查是否达到 90;如果没有,再检查是否达到 75;接着检查是否达到 60。按从高到低排列,可以避免高分先被较宽泛的条件截住。
嵌套 IF 容易出现括号不匹配、区间漏判和条件顺序错误。复杂规则应把每档的边界写下来,并至少测试边界值。例如上例可以分别测试 59、60、74、75、89 和 90,确认结果符合预期。
在支持 IFS 的版本中,可用 IFS 表达多个条件,通常比多层嵌套更易读:
=IFS(A2>=90,"优秀",A2>=75,"良好",A2>=60,"及格",TRUE,"不及格")
IFS 会按顺序检查条件,并返回第一个为 TRUE 的条件对应结果。最后的 TRUE 用作兜底条件;如果所有条件都不成立且没有兜底项,公式可能返回错误。IFS 是否可用取决于软件及版本。若要兼容不支持 IFS 的环境,可使用嵌套 IF。
如果规则本质上是“代码对应名称”或“区间对应费率”,且对应项很多,建议把映射关系放在独立区域并使用查找函数。这样修改规则时通常只需更新表格,而不必反复改写长公式,也便于审计。
八、用 IF 判断错误,还是用 IFERROR
IF 用来判断一个条件,并不等同于错误处理函数。若目的是在计算出错时给出替代结果,通常应考虑 IFERROR。例如,计算单价时分母可能为零:
=IFERROR(A2/B2,"无法计算")
当 A2/B2 返回错误时,IFERROR 返回“无法计算”;否则返回计算结果。相比之下,下面的写法只是先判断分母是否为零:
=IF(B2=0,"无法计算",A2/B2)
后一种写法明确表达“分母为零”的业务条件,但不能处理其他类型的错误。两者的适用范围不同:如果需要区分零分母、缺失数据和其他异常,应分别判断并给出有意义的提示,而不是把所有错误都隐藏成一个空白值。
九、参数限制与版本边界
IF 的核心参数是一个条件和两个结果参数,第三个参数可以省略。不要把它和“可无限添加条件”的函数混为一谈:传统 IF 一次只处理一个判断分支,多个分支要用嵌套 IF、IFS、查找表等方式表达。
Excel 对函数嵌套层数有版本差异。较新的 Excel 版本允许最多 64 层嵌套函数;Excel 2003 及更早版本的上限较低,为 7 层。实际工作中,即使版本允许继续嵌套,也不代表应该把公式写到极限:层数越多,越难阅读、测试和维护。Google 表格及其他电子表格软件的限制和功能可能不同,应以对应产品的官方文档和实际版本为准。
此外,公式还受单元格引用、表达式长度、工作簿复杂度和软件兼容性等因素影响。把一条极长公式复制到大量行中,可能增加文件计算和维护负担。对大量规则,通常应考虑拆分辅助列、使用映射表,或在支持的环境中使用更合适的函数。
公式参数分隔符可能受区域设置影响。有的环境使用逗号,有的使用分号。例如,以下两种写法表达相同逻辑,具体使用哪一种取决于软件设置:
=IF(A2>=60,"及格","不及格")
=IF(A2>=60;"及格";"不及格")
如果复制公式后出现解析错误,先检查参数分隔符、括号、引号和函数名,而不应直接认定条件逻辑有问题。
十、常见错误及排查方法
1. 文本没有加双引号
错误写法:
=IF(A2=完成,"已办结","处理中")
如果“完成”是文本,应改为:
=IF(A2="完成","已办结","处理中")
未加引号的内容会被当作名称或其他表达式处理,可能导致名称错误,也可能产生与预期不同的结果。
2. 把等于号写成赋值
条件判断中使用 = 表示比较相等,不是给单元格赋值。要检查数值是否为 10,写作 A2=10;检查不等于 10,写作 A2<>10。
3. 比较对象的数据类型不一致
看起来像数字的内容可能实际存储为文本。若数字文本与真正的数值混用,比较、求和和排序可能产生意外结果。应统一数据类型;必要时用数据转换函数或清理源数据,而不是依赖软件自动转换。
4. 结果值误写为文本
"100" 是文本,100 是数字。若 IF 的结果后续要参与计算,应返回数值,避免给数字加引号。
5. 条件顺序造成区间被提前匹配
例如先判断 A2>=60,再判断 A2>=90,那么 95 会在第一个条件处被判为“及格”,后面的“优秀”条件无法执行。多档判断应从最严格或最高的门槛开始,逐步放宽,并检查边界。
6. 忘记写不成立时的结果
省略第三个参数时,条件不成立会返回逻辑值 FALSE,这可能在报表中显得突兀。若希望显示为空文本,可以明确写成:
=IF(A2>=60,"及格","")
空字符串和真正空白并不完全相同;后续统计或空白判断时应了解这种区别。
7. 用 IF 代替数据验证
IF 只能根据已有值返回结果,不能自动保证用户只能输入合法数据。若需要限制输入范围,应使用数据验证或应用程序中的输入校验,并在计算或保存前进行必要检查。
十一、可直接套用的示例
下面几个公式可分别放入对应的数据行中,按实际列位置调整引用。
成绩是否及格
=IF(B2>=60,"及格","不及格")
检查库存是否低于安全线
=IF(C2<D2,"需要补货","库存正常")
这里假设 C 列是当前库存,D 列是安全库存。
按订单金额计算运费
=IF(E2>=200,0,15)
金额达到 200 时免运费,否则收取 15。实际业务中还应确认金额的币种、是否包含税费,以及边界值是否确实采用“达到 200 即免运费”。
只在有有效数量时计算总价
=IF(AND(F2<>"",F2>0),F2*G2,"")
该公式在 F2 非空且大于 0 时,计算数量乘单价;否则返回空文本。数据可能包含文本或错误值时,仍需先确认输入类型,避免比较或运算失败。
检查日期是否已过期
=IF(AND(H2<>"",H2<TODAY()),"已过期","未过期")
TODAY() 返回当前日期。日期为空时公式不会把空白直接标记为过期。若 H2 可能存有无法识别的文本日期,应先清理或校验数据。
十二、IF 函数与安全:它不是访问控制
IF 只是电子表格中的计算函数。它不会加密数据、验证用户身份、阻止用户查看单元格内容,也不能替代服务器端权限校验。将敏感信息藏在公式的某个分支中,或把结果显示为空,都不代表该信息受到保护。需要保密或限制操作时,应使用真正的访问控制、权限管理和数据最小化措施。
如果用户可以编辑输入内容,不能仅凭一个 IF 结果认定数据可信。例如,表格中的公式可以被修改,单元格也可能被替换为其他值。对于影响付款、权限、库存或合规的关键业务规则,应在可信的业务系统中重新校验,不能把可编辑表格公式当作唯一安全边界。
从外部导入数据时,还要注意公式注入风险:如果不可信文本被导出到 CSV,且内容以某些电子表格软件会识别为公式的字符开头,用户打开文件时可能触发公式解释。IF 并不能防止这种情况。生成 CSV 或处理导入内容时,应根据目标软件和业务场景对不可信字段进行安全处理;需要计算的公式与普通用户文本应明确区分,不要把外部输入直接拼接成可执行公式。
十三、写好 IF 公式的检查清单
- 先用一句话写清楚“条件成立”和“不成立”各自代表什么。
- 确认比较的是数值、文本、日期,还是空白状态。
- 文本常量加双引号,数值不要误加引号。
- 多档判断按合理顺序排列,检查相邻档位的边界。
- 明确第三个参数,避免意外返回 FALSE。
- 复合条件先梳理 AND 与 OR 的关系,再写公式。
- 用正常值、边界值、空值和异常值进行测试。
- 规则过多时优先考虑映射表或更适合的函数,不盲目增加嵌套层数。
- 不要把 IF 当作数据验证、错误处理的万能方案或安全权限控制。
总的来说,IF 的核心只有三部分:要判断的条件、条件成立时的结果、条件不成立时的结果。简单规则可以直接用 IF;多个条件可配合 AND、OR;多档分类可以使用嵌套 IF 或 IFS;大量对应关系则更适合整理成映射表。把数据类型、边界值和返回结果检查清楚,公式才会既能运行,也能在后续维护中保持可靠。









