IF
函数用于根据条件判断返回不同的值
基本语法为:
=IF(条件, 值1, 值2)
-
条件:需要判断的逻辑表达式,结果为
TRUE
或FALSE
。 -
值1:条件为
TRUE
时返回的值。 -
值2:条件为FALSE时返回的值。
示例1:嵌套IF
假设A1的值为80,判断成绩等级:
=IF(A1 >= 95, "优秀", IF(A1 >= 85, "良好", IF(A1 >= 60, "及格", "不及格")))
-
如果A1 ≥ 95,返回“优秀”。
-
如果85 ≤ A1 < 95,返回“良好”。
-
如果60 ≤ A1 < 85,返回“及格”。
-
否则,返回“不及格”。
示例2:结合AND/OR
假设A1为30,B1为20,判断是否同时大于5:
=IF(AND(A1 > 5, B1 > 5), "都大于5", "不都大于5")
-
如果A1和B1都大于5,返回“都大于5”。
-
否则,返回“不都大于5”。
示例3:结合 IFERROR
函数
例:
fee_rate1 | fee_rate2 | fee_rate3 |
---|---|---|
0.5 | #N/A | #N/A |
0.4 | #N/A | #N/A |
#N/A | #N/A | 0.4 |
#N/A | #N/A | 0.4 |
#N/A | #N/A | 0.4 |
0.5 | #N/A | #N/A |
0.5 | #N/A | #N/A |
#N/A | #N/A | 0.4 |
#N/A | #N/A | 0.4 |
#N/A | 0.4 | #N/A |
要将
fee_rate1
、fee_rate2
、fee_rate3
三列的数据合并到一列中,并忽略#N/A
错误值
假如数据从第二行开始,输出内容在D列,则公式如下:
=IFERROR(IF(A2<>"#N/A", A2, IF(B2<>"#N/A", B2, IF(C2<>"#N/A", C2, ""))), "")
公式解释:
-
IF(A2<>"#N/A", A2, ...)
:检查fee_rate1
是否为#N/A
,如果不是,则返回fee_rate1
的值。 -
IF(B2<>"#N/A", B2, ...)
:如果fee_rate1
是#N/A
,则检查fee_rate2
是否为#N/A
,如果不是,则返回fee_rate2
的值。 -
IF(C2<>"#N/A", C2, "")
:如果fee_rate1
和fee_rate2
都是#N/A
,则检查fee_rate3
是否为#N/A
,如果不是,则返回fee_rate3
的值。 -
IFERROR(..., "")
:如果所有列都是#N/A
,则返回空值""
。
输出结果如下:
fee_rate1 | fee_rate2 | fee_rate3 | fee_rate |
---|---|---|---|
0.5 | #N/A | #N/A | 0.5 |
0.4 | #N/A | #N/A | 0.4 |
#N/A | #N/A | 0.4 | 0.4 |
#N/A | #N/A | 0.4 | 0.4 |
#N/A | #N/A | 0.4 | 0.4 |
0.5 | #N/A | #N/A | 0.5 |
0.5 | #N/A | #N/A | 0.5 |
#N/A | #N/A | 0.4 | 0.4 |
#N/A | #N/A | 0.4 | 0.4 |
#N/A | 0.4 | #N/A | 0.4 |
对于此类数据还有其他两种方法:
=IFERROR(CHOOSE(MATCH(TRUE, A2:C2<>"#N/A", 0), A2, B2, C2), "-99")
=IFERROR(CHOOSE(MATCH(TRUE, A2:C2<>"#N/A", 0), A2, B2, C2), "-99")
注意事项
-
嵌套限制:Excel 2003及更早版本最多支持7层嵌套,2007及以后版本支持64层。
-
文本与数字:文本需用引号括起,数字直接使用。
-
逻辑表达式:可以使用>,
<
,=
,>=
,<=
,<>
等运算符。