Excel 条件判断进阶 #

函数概览 #

高级条件判断函数提供了更简洁的方式来处理多重条件,避免了复杂的嵌套 IF。

text
┌─────────────────────────────────────────────────────────────┐
│                    高级条件函数一览                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  IFS      多条件判断  =IFS(A1>=90, "A", A1>=80, "B", ...)   │
│  SWITCH   值匹配      =SWITCH(A1, 1, "一", 2, "二", ...)    │
│  IFNA     #N/A处理    =IFNA(A1, "无")                       │
│  IFERROR  错误处理    =IFERROR(A1, "错误")                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

嵌套 IF #

基本结构 #

excel
=IF(条件1, 结果1, 
   IF(条件2, 结果2, 
      IF(条件3, 结果3, 默认结果)))

成绩等级示例 #

excel
传统嵌套 IF:
=IF(A1>=90, "优秀", 
   IF(A1>=80, "良好", 
      IF(A1>=70, "中等", 
         IF(A1>=60, "及格", "不及格"))))

逻辑流程:
A1 >= 90? → 是 → "优秀"
         → 否 → A1 >= 80? → 是 → "良好"
                            → 否 → A1 >= 70? → 是 → "中等"
                                              → 否 → A1 >= 60? → 是 → "及格"
                                                                → 否 → "不及格"

嵌套 IF 的局限 #

text
1. 可读性差:多层嵌套难以理解
2. 维护困难:修改条件需要仔细定位
3. 容易出错:括号匹配容易出错
4. 层数限制:Excel 2003 最多7层,2007+ 最多64层

实际示例 #

text
奖金计算:
    A          B
1   销售额     奖金比例
2   15000      =IF(A2>=20000, 15%, 
                   IF(A2>=10000, 10%, 
                      IF(A2>=5000, 5%, 
                         IF(A2>=1000, 2%, 0))))
              → 10%

IFS 函数 #

语法 #

excel
=IFS(condition1, value1, [condition2, value2], ...)

按顺序检查条件,返回第一个为 TRUE 的条件对应的值

基本用法 #

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

注意:
- 条件按顺序检查,第一个为 TRUE 的条件生效
- 建议最后一个条件使用 TRUE 作为默认值
- 如果所有条件都为 FALSE,返回 #N/A

IFS vs 嵌套 IF #

excel
嵌套 IF:
=IF(A1>=90, "优秀", IF(A1>=80, "良好", IF(A1>=60, "及格", "不及格")))

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

优势:
- 更简洁
- 更易读
- 更易维护

实际应用 #

excel
成绩等级:
=IFS(A1>=90, "A", A1>=80, "B", A1>=70, "C", A1>=60, "D", TRUE, "F")

月份转季度:
=IFS(MONTH(A1)<=3, "Q1", MONTH(A1)<=6, "Q2", MONTH(A1)<=9, "Q3", TRUE, "Q4")

年龄段分类:
=IFS(A1<18, "未成年", A1<35, "青年", A1<55, "中年", TRUE, "老年")

实际示例 #

text
成绩等级:
    A          B
1   成绩       等级
2   85         =IFS(A2>=90, "优秀", A2>=80, "良好", 
                           A2>=60, "及格", TRUE, "不及格")
              → "良好"

注意事项 #

excel
如果没有条件为 TRUE,返回 #N/A:
=IFS(A1>100, "大于100")
如果 A1 <= 100,返回 #N/A

解决方法:添加默认条件
=IFS(A1>100, "大于100", TRUE, "小于等于100")

SWITCH 函数 #

语法 #

excel
=SWITCH(expression, value1, result1, [value2, result2], ..., [default])

参数:
- expression: 要匹配的表达式
- value1, value2...: 要匹配的值
- result1, result2...: 匹配成功时返回的结果
- default: 默认值(可选)

基本用法 #

excel
=SWITCH(A1, 1, "一月", 2, "二月", 3, "三月", "其他")

=SWITCH(WEEKDAY(A1, 2), 
        1, "周一", 2, "周二", 3, "周三", 
        4, "周四", 5, "周五", 6, "周六", 7, "周日")

SWITCH vs 嵌套 IF #

excel
嵌套 IF:
=IF(A1=1, "一月", IF(A1=2, "二月", IF(A1=3, "三月", "其他")))

SWITCH:
=SWITCH(A1, 1, "一月", 2, "二月", 3, "三月", "其他")

优势:
- 更简洁
- 更直观
- 匹配值和结果成对出现

实际应用 #

excel
数字转中文:
=SWITCH(A1, 1, "一", 2, "二", 3, "三", 4, "四", 5, "五", "其他")

星期转中文:
=SWITCH(WEEKDAY(A1, 2), 1, "周一", 2, "周二", 3, "周三", 
        4, "周四", 5, "周五", 6, "周六", 7, "周日")

状态码转文字:
=SWITCH(A1, 0, "待处理", 1, "处理中", 2, "已完成", 3, "已取消", "未知")

实际示例 #

text
状态转换:
    A          B
1   状态码     状态
2   1          =SWITCH(A2, 0, "待处理", 1, "处理中", 
                          2, "已完成", 3, "已取消", "未知")
              → "处理中"

SWITCH 的局限 #

excel
SWITCH 只能进行精确匹配,不支持比较运算:

不支持:
=SWITCH(A1, >90, "优秀", >80, "良好")  ✗ 错误

应使用 IFS:
=IFS(A1>90, "优秀", A1>80, "良好")  ✓ 正确

条件判断最佳实践 #

选择合适的函数 #

text
┌─────────────────────────────────────────────────────────────┐
│                    条件函数选择指南                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  单条件判断:                                                │
│  └── IF                                                     │
│                                                             │
│  多条件精确匹配:                                            │
│  └── SWITCH                                                 │
│                                                             │
│  多条件范围判断:                                            │
│  └── IFS                                                    │
│                                                             │
│  复杂逻辑组合:                                              │
│  └── IF + AND/OR                                            │
│                                                             │
│  兼容旧版本:                                                │
│  └── 嵌套 IF                                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

代码可读性 #

excel
使用换行和缩进提高可读性:

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

避免过度嵌套 #

excel
不推荐:
=IF(A1>0, IF(B1>0, IF(C1>0, "全正", "C非正"), "B非正"), "A非正")

推荐:使用 AND
=IF(AND(A1>0, B1>0, C1>0), "全正", "有非正")

实战案例 #

案例1:复杂成绩评定 #

text
数据:
    A          B          C          D
1   语文       数学       英语       综合评定
2   85         90         78         =IFS(AND(A2>=90, B2>=90, C2>=90), "全优",
                                      OR(A2<60, B2<60, C2<60), "有不及格",
                                      AND(A2>=80, B2>=80, C2>=80), "良好",
                                      TRUE, "一般")
                                      → "良好"

案例2:客户等级 #

text
数据:
    A          B          C
1   消费金额   年限       等级
2   50000      5          =IFS(AND(A2>=100000, B2>=5), "钻石",
                              AND(A2>=50000, B2>=3), "金卡",
                              AND(A2>=10000, B2>=1), "银卡",
                              TRUE, "普通")
                              → "金卡"

案例3:订单状态 #

text
数据:
    A          B
1   状态码     状态说明
2   2          =SWITCH(A2, 0, "待付款", 1, "待发货", 
                          2, "已发货", 3, "已完成", 4, "已取消", "未知")
              → "已发货"

小结 #

高级条件判断函数提供了更简洁的方式处理多重条件:

函数 用途 示例
嵌套 IF 多条件判断(兼容旧版) =IF(A1>90, "A", IF(A1>80, "B", "C"))
IFS 多条件判断 =IFS(A1>=90, "A", A1>=80, "B", TRUE, "C")
SWITCH 精确值匹配 =SWITCH(A1, 1, "一", 2, "二", "其他")

接下来,让我们学习 错误处理函数,掌握错误处理技巧。

最后更新:2026-04-11