IF 函数:语法、示例与错误排查
更新于 2026-10-13 · 免费 · 兼容 Excel 与 Google Sheets
语法
=IF(测试条件, 真值, [假值])快速答案
IF 根据一个测试返回两个值之一:=IF(B2>=50, "Pass", "Fail") 在 B2 大于等于 50 时显示 Pass,否则显示 Fail。文本结果必须加英文双引号;数字和公式直接写。第三参数可选——省略时公式返回 FALSE,而不是空白。
语法
=IF(测试条件, 真值, [假值])| 参数 | 含义 |
|---|---|
| 测试条件 | 结果为 TRUE 或 FALSE 的判断:如 B2>=50 的比较、C2="Paid" 的等值判断,或任何能得出 TRUE/FALSE 的表达式。 |
| 真值 | 测试成立时返回的内容——加英文双引号的文本、数字、日期或另一个公式。 |
| 假值 | 可选。测试不成立时返回的内容。省略时 IF 返回 FALSE;想让单元格显示为空白,请写空引号 ""。 |
在部分区域设置下(如欧洲和拉美多数国家),参数用分号而不是逗号分隔:=IF(B2>=50; "Pass"; "Fail")。这些地区以逗号作小数点,属于正常现象。
基本示例
=IF(B2>=50, "Pass", "Fail")经典的及格/不及格判断:50 分及以上显示 Pass,低于 50 显示 Fail。文本结果必须加英文双引号;比较运算符(=、<>、>、>=、<、<=)写在测试条件里,不写在结果里。
=IF(C2>1000, C2*0.1, 0)销售额超过 1000 提成 10%,否则为 0。两个结果都是计算式,所以不加任何引号——IF 可以返回任意公式,不只是固定值。
=IF(D2="", "Missing", D2*1.2)先判断单元格是否为空并标记,否则执行加价计算。用 ="" 判断空单元格,是在做数学运算前兜底空值的标准写法。
=IF(E2="Done", "Closed", "")给已完成行打标签,其余行保持真正的空白。空引号让单元格看起来是空的——如果省略第三参数,显示的会是 FALSE 而不是空白。
数字结果不要加引号:=IF(A1>0, "50", 0) 返回的是文本 "50",SUM 和 AVERAGE 会直接跳过它。只有文本结果才加引号;数字、日期、公式一律裸写。
常见错误与修复方法
| 症状 | 最常见原因 | 修复方法 |
|---|---|---|
| #NAME? | IF 拼写错误——或者你的 Excel 是其它语言版本,函数有本地化名称(SI、WENN、SE)。 | 输入 =I 或 =W 让自动补全完成名称,或用对应语言版本的 Excel 打开文件。 |
| 结果直接显示 FALSE | 省略了第三参数,测试不成立时 IF 打印 FALSE。 | 补上假值参数;想显示空白就写 ""。 |
| 数字变成了文本 | 结果写在了引号里:=IF(A1>0, "50", 0) 返回文本,SUM 会跳过。 | 去掉数字结果的引号:=IF(A1>0, 50, 0)。 |
| 部分行出现 #VALUE! | IF 本身没问题——结果里的公式(如 D2*1.2)碰到了源列的文本或空值。 | 修复源数据,或给计算加保护:=IF(D2="", "Missing", D2*1.2)。 |
| 每一行返回同一个结果 | 测试条件没有比较:=IF(B2, "Yes", "No") 会把任何非零数字当 TRUE;本想写 =IF(B2>50, ...) 却写成了 =IF(B2=50, ...)。 | 写完整的比较(B2>50、B2<>""),等号只在确实要判等时使用。 |
不可见空格同样会破坏文本等值判断:=IF(C2="Paid", ...) 匹配不到带尾部空格的「Paid 」。先清理整列,再比较就能命中。
嵌套 IF 与 IFS 对比
| 嵌套 IF | IFS | |
|---|---|---|
| 每个公式的条件数 | 无限制,但每层都多一个右括号 | 最多 127 组,按「条件, 结果」平铺 |
| 可读性 | 超过 3-4 层就很难审阅 | 条件自上而下顺读,没有括号迷宫 |
| 可用版本 | 所有 Excel 版本(含 Google Sheets) | Excel 2019+/365(含 Google Sheets) |
=IF(B2>=90, "A", IF(B2>=80, "B", IF(B2>=70, "C", "F")))经典的等级阶梯:某个条件不成立就落到下一层 IF。要从内往外读,注意右括号会堆在结尾——三层嵌套末尾就是三个右括号。
=IFS(B2>=90, "A", B2>=80, "B", B2>=70, "C", TRUE, "F")同样的阶梯用 IFS 写:条件和结果交替平铺,按顺序求值。IFS 没有内置的「否则」——结尾的 TRUE, "F" 充当兜底分支,作用等同于上面最后一个 IF。
Google Sheets 中的 IF
Google Sheets 支持与 Excel 相同的参数和行为,上文的公式可以原样粘贴使用。
- 可选第三参数的行为一致:省略时 Sheets 同样返回 FALSE,而不是空白。
- 在以逗号作小数点的区域设置下(欧洲和拉美多数国家),参数之间输入分号:=IF(B2>=50; "Pass"; "Fail")。Excel 行为相同。
- Sheets 也有 IFS,同样没有默认兜底——用结尾的 TRUE, 兜底值 覆盖剩余情况。
- 分支很多时,两款软件都提供 SWITCH:拿一个单元格与一列值逐一比较,比多层 IF 嵌套可读得多。
限制与进阶技巧
- IF 只返回值,不能执行操作或「什么都不做」。条件格式、筛选、删除行等操作请直接使用对应功能,不要套 IF。
- 嵌套超过 3-4 层时改用 IFS,或者用查找替换整个阶梯:=VLOOKUP(B2, $F$2:$G$5, 2, TRUE) 一行就能把分数段映射成等级。
- 数字结果不加引号——被引号的数字会变成文本,从 SUM、AVERAGE 和图表中消失。
- 省略第三参数得到的是 FALSE 而不是空单元格:想要空白外观请显式写 ""。
- 用 & 拼接文本和单元格:=IF(B2>=50, "Passed with "&B2, "Failed with "&B2) 不加辅助列就能生成动态消息。
IF 的可靠性取决于它所判断的数据。先校验这一列——空值、文本数字和重复项都会悄悄改变结果——再让公式发挥作用。
相关工具
相关函数
常见问题
IF 函数在 Excel 里是做什么的?
它执行一次测试并返回两个值之一:=IF(B2>=50, "Pass", "Fail") 在测试成立时显示 Pass,不成立时显示 Fail。测试可以比较数字、文本或日期,两个结果可以是文本、数字、日期或完整公式。
怎么写返回文本的 IF 公式?
把文本用英文双引号包在公式里:=IF(C2="Paid", "Yes", "No")。引号只属于结果本身——如果单元格显示出了引号,说明你把引号误写进了字符串内部。
为什么我的 IF 公式返回 FALSE?
第三参数缺失:=IF(B2>50, "High") 在测试不成立时打印 FALSE。补上假值——想让单元格看起来是空的就写 "":=IF(B2>50, "High", "")。
IF 能返回计算结果而不是文本吗?
可以——把公式放进结果位且不加引号:=IF(C2>1000, C2*0.1, 0) 在 C2 超过 1000 时返回其 10%,否则返回 0。两个结果位都可以放任意公式,包括嵌套的 IF。
IF 怎么组合多个条件?
用 AND(全部成立)或 OR(任一成立)组合测试:=IF(AND(B2>=50, C2<3), "Bonus", "No bonus")。二选一的逻辑把 AND 换成 OR:=IF(OR(B2="", C2=""), "Missing", "OK")。
IF 最多能嵌套几层?
技术上现代 Excel 支持到 64 层,但超过 3-4 层可读性就崩了。层数再多就改用 IFS 平铺条件(Excel 2019+/365),或者用范围查找替换整个阶梯:=VLOOKUP(B2, $F$2:$G$5, 2, TRUE)。
IF 在 Google Sheets 里能用吗?
能——名称、三个参数、省略第三参返回 FALSE 的行为都一样。只有在以逗号作小数点的区域设置下,参数分隔符改为分号:=IF(B2>=50; "Pass"; "Fail")。
准备好处理你自己的文件了吗?
打开Excel 数据校验标记 — 免费