if
IF()函数详解
一、IF()函数基本介绍
用途
根据条件判断返回不同的值
语法
IF(logical_test, value_if_true, value_if_false)
参数说明
| 参数 | 是否必需 | 说明 |
|---|---|---|
| logical_test | 必需 | 逻辑判断表达式(结果为TRUE或FALSE) |
| value_if_true | 必需 | 条件为TRUE时返回的值 |
| value_if_false | 必需 | 条件为FALSE时返回的值 |
二、基础示例
示例数据表1:学生成绩判断
| A | B | C | D |
|---|---|---|---|
| 学号 | 姓名 | 成绩 | 是否及格 |
| S001 | 张三 | 85 | |
| S002 | 李四 | 58 | |
| S003 | 王五 | 92 | |
| S004 | 赵六 | 45 |
基础用法
-
简单判断是否及格(60分及格)
=IF(C2>=60, "及格", "不及格") -
多等级判断
=IF(C2>=90, "优秀",IF(C2>=80, "良好",IF(C2>=70, "中等",IF(C2>=60, "及格", "不及格")))) -
与AND函数结合
=IF(AND(C2>=60, C2<=100), "有效成绩", "无效成绩") -
与OR函数结合
=IF(OR(C2<0, C2>100), "异常分数", "正常分数")
三、实际应用场景
应用1:员工考勤奖金计算
| A | B | C | D |
|---|---|---|---|
| 员工ID | 姓名 | 出勤天数 | 奖金 |
| E001 | 张三 | 22 | |
| E002 | 李四 | 18 | |
| E003 | 王五 | 25 | |
| E004 | 赵六 | 20 |
=IF(C2>=22, 500,
IF(C2>=20, 300,
IF(C2>=18, 100, 0)
)
)
应用2:销售提成计算
| A | B | C | D |
|---|---|---|---|
| 销售员 | 销售额 | 提成比例 | 提成金额 |
| 张三 | 150000 | ||
| 李四 | 80000 | ||
| 王五 | 250000 |
=IF(B2>200000, B2*0.1,
IF(B2>100000, B2*0.08,
IF(B2>50000, B2*0.05, B2*0.03)
)
)
四、嵌套IF函数
嵌套语法
IF(条件1, 结果1,
IF(条件2, 结果2,
IF(条件3, 结果3, 默认结果)
)
)
示例:学生评级系统
=IF(C2>=95, "A+",
IF(C2>=90, "A",
IF(C2>=85, "B+",
IF(C2>=80, "B",
IF(C2>=75, "C+",
IF(C2>=70, "C",
IF(C2>=60, "D", "F")
)
)
)
)
)
)
注意:Excel 2016+版本支持IFS函数简化嵌套
=IFS(C2>=95, "A+",
C2>=90, "A",
C2>=85, "B+",
C2>=80, "B",
C2>=75, "C+",
C2>=70, "C",
C2>=60, "D",
TRUE, "F")
五、IF函数与其他函数结合
1. 与SUM函数结合
=IF(SUM(A1:A10)>100, "达标", "未达标")
2. 与COUNTIF函数结合
=IF(COUNTIF(A1:A10, "完成")=10, "全部完成", "有未完成")
3. 与VLOOKUP函数结合
=IF(ISERROR(VLOOKUP(A2, 数据表!$A:$B, 2, FALSE)), "未找到", VLOOKUP(...))
4. 与TODAY函数结合
=IF(TODAY()>A2, "已过期", "有效期内")
六、IF函数返回不同类型值
返回文本
=IF(A1>10, "大于10", "小于等于10")
返回数字
=IF(A1>10, 100, 50)
返回公式
=IF(A1>10, B1*0.1, B1*0.05)
返回单元格引用
=IF(A1>10, B1, C1)
返回空值
=IF(A1>10, "符合", "")
或
=IF(A1>10, "符合", NA())
七、常见错误及解决方法
1. #NAME? 错误
=if(A1>10, "是", "否") ❌ 函数名必须大写
=IF(A1>10, "是", "否") ✅
2. 参数数量错误
=IF(A1>10, "是") ❌ 缺少第三个参数
=IF(A1>10, "是", "否") ✅
3. 嵌套层数过多
=IF(...IF(...)) 最多嵌套64层(Excel不同版本可能有差异)
4. 文本比较问题
=IF(A1="10", "是", "否") ❌ 如果A1是数字10,可能不匹配
=IF(A1=10, "是", "否") ✅ 或 =IF(TEXT(A1,"0")="10", "是", "否")
八、综合练习
练习数据表
| A | B | C | D | E | F |
|---|---|---|---|---|---|
| 员工ID | 姓名 | 部门 | 销售额 | 出勤率 | 绩效评级 |
| E001 | 张三 | 销售部 | 150000 | 95% | |
| E002 | 李四 | 技术部 | 0 | 98% | |
| E003 | 王五 | 销售部 | 80000 | 85% | |
| E004 | 赵六 | 销售部 | 250000 | 90% | |
| E005 | 孙七 | 人事部 | 0 | 100% |
练习题
-
根据销售额判断是否达标(达标标准:100000)
=IF(D2>=100000, "达标", "未达标") -
计算销售提成(规则:20万以上10%,10-20万8%,5-10万5%,5万以下3%)
=IF(D2>200000, D2*0.1,IF(D2>100000, D2*0.08,IF(D2>50000, D2*0.05,IF(D2>0, D2*0.03, 0)))) -
综合绩效评级(销售额达标且出勤率>90%为A,否则为B)
=IF(AND(D2>=100000, E2>0.9), "A", "B") -
判断部门是否销售部
=IF(C2="销售部", "销售人员", "非销售人员") -
计算奖金(销售部按销售额5%,其他部门固定2000)
=IF(C2="销售部", D2*0.05, 2000) -
判断是否有销售业绩
=IF(D2>0, "有业绩", IF(D2=0, "无业绩", "数据错误")) -
创建状态标签(优秀:销售额>20万且出勤率>95%)
=IF(AND(D2>200000, E2>0.95), "⭐优秀员工", "普通员工")
九、进阶应用
1. 数组公式中的IF
{=SUM(IF(A1:A10>10, B1:B10, 0))} // 计算大于10的对应值之和
2. IF函数与条件格式结合
=IF(A1>TODAY(), "未到期", "已到期") // 可用于条件格式规则
3. 多条件判断(复杂逻辑)
=IF(OR(AND(A1>10, B1<5), C1="是"), "通过", "不通过")
4. 错误处理
=IFERROR(原公式, "出错时显示的内容")
=IF(ISERROR(原公式), "出错", 原公式)
十、实战技巧
技巧1:简化嵌套IF
// 使用LOOKUP代替多层IF
=LOOKUP(A1, {0,60,70,80,90}, {"F","D","C","B","A"})
技巧2:IF函数+CHOOSE函数
=CHOOSE(MATCH(A1, {0,60,70,80,90}), "F","D","C","B","A")
技巧3:返回带格式的内容
=IF(A1>10, "✅达标", "❌未达标")
技巧4:数据验证中的IF
=IF($A$1="是", $B$1:$B$10, $C$1:$C$10) // 动态下拉列表
十一、性能优化建议
- 避免过度嵌套:超过7层嵌套考虑使用其他函数
- 计算顺序:将最可能发生的情况放在前面
- 使用IFS函数:Excel 2016+版本使用IFS更清晰
- 数组公式替代:对于复杂条件判断,考虑使用FILTER函数
- 缓存计算结果:对于重复使用的条件,先计算并存储到辅助列
十二、总结
IF函数是Excel中最重要、最常用的逻辑函数之一,掌握它的使用技巧可以:
- 实现数据自动分类
- 创建动态计算公式
- 构建智能报表
- 实现数据验证和清洗
- 提升工作效率和准确性