Table of contents
本教程展示了如何在Excel中用AND以及OR逻辑创建多个IF语句。 同时,你将学习如何将IF与其他Excel函数一起使用。
在Excel IF教程的第一部分,我们研究了如何构建一个简单的IF语句,对文本、数字、日期、空白和非空白都有一个条件。 然而,对于强大的数据分析,你可能经常需要一次评估多个条件。 下面的公式例子将告诉你最有效的方法。
如何使用多条件的IF函数
从本质上讲,有两种类型的 基于AND/OR逻辑的具有多个标准的IF公式 因此,在你的IF公式的逻辑测试中,你应该使用这些函数之一。
- 和函数--如果返回TRUE 所有条件 满足;否则为 "FALSE"。
- OR函数--如果返回TRUE 任何单一条件 满足;否则为FALSE。
为了更好地说明这一点,让我们调查一些现实生活中的公式例子。
Excel的IF语句有多个条件(AND逻辑)。
Excel中带有两个或多个条件的IF的通用公式是这样的。
IF(AND( 条件1 , 条件2 , ...), value_if_true, value_if_false)翻译成人类语言,该公式说:如果条件1为真,条件2为真,返回 value_if_true ; 否则返回 value_if_false .
假设你有一个表格,在B列和C列中列出了两次考试的分数,要想通过期末考试,学生的两项分数必须大于50分。
对于逻辑测试,你使用以下AND语句:AND(B2>50, C2>50)
如果两个条件都是真的,该公式将返回 "通过";如果任何条件是假的--"失败"。
=IF(AND(B2>50, B2>50), "通过", "失败")
下面的截图证明了我们的Excel IF /AND公式是正确的。
以类似的方式,你可以使用Excel的IF函数与多个 文本条件 .
例如,如果B2和C2都大于50,则输出 "好",否则输出 "坏",公式为:。
=IF(AND(B2="通过", C2="通过"), "好!", "坏")
重要提示!AND函数检查 所有条件 这种行为有点不寻常,因为在大多数编程语言中,如果前面的测试结果为FALSE,那么后面的条件就不会被测试。
在实践中,由于这种特殊性,一个看似正确的IF语句可能会导致错误。 例如,如果单元格A2等于0,下面的公式会返回#DIV/0!("除以0 "错误)。
=IF(AND(A20, (1/A2)>0.5), "好", "坏")
为了避免这种情况,你应该使用一个嵌套的IF函数。
=IF(A20, IF((1/A2)>0.5, "好", "坏"), "坏")
更多信息,请参见Excel中的IF AND公式。
Excel IF函数具有多个条件(OR逻辑)。
要做一件事,如果 任何条件 是满足的,否则做其他事情,使用这种IF和OR函数的组合。
IF(OR( 条件1 , 条件2 , ...), value_if_true, value_if_false)与上面讨论的IF/AND公式不同的是,如果任何一个指定的条件为真,Excel将返回TRUE。
因此,如果在前面的公式中,我们使用OR而不是AND。
=IF(OR(B2>50, B2>50), "通过", "失败")
在这样的条件下,我们的学生有更大的机会通过期末考试(Yvette特别不走运,只考了1分)。
提示:如果你正在创建一个 多个带文本的IF语句 并用OR逻辑测试一个单元格中的值(即一个单元格可以是 "这个 "或 "那个"),那么你可以用数组常数建立一个更紧凑的公式。
例如,如果单元格B2是 "已交付 "或 "已支付",要将一项销售标记为 "已结束",公式为:。
=IF(OR(B2={"交付", "支付"}), "关闭", "" )
更多的公式例子可以在Excel IF OR函数中找到。
带有多个AND & OR语句的IF
如果你的任务需要评估几组多重条件,你将不得不同时利用AND & OR函数。
在我们的示例表中,假设你有以下检查考试结果的标准。
- 条件1:考试1>50和考试2>50
- 条件2:考试1>40和考试2>60
如果满足其中任何一个条件,期末考试即被视为通过。
乍一看,这个公式似乎有点棘手,但事实上并不复杂!你只需将上述每个条件表达为一个AND语句,并将其嵌套在OR函数中(因为不一定要同时满足两个条件,任何一个都够了)。
OR(AND(B2>50, C2>50), AND(B2>40, C2>60)
然后,使用OR函数进行IF的逻辑测试,并提供所需的 value_if_true 和 value_if_false 结果,你会得到以下带有多个AND/OR条件的IF公式。
=IF(OR(AND(B2>50, C2>50), AND(B2>40, C2>60), "通过", "失败")
下面的截图表明,我们的公式是正确的。
当然,你并不局限于在你的IF公式中只使用两个AND/OR函数。 你可以根据你的业务逻辑需要使用任意多的函数,只要。
- 在Excel 2007及以上版本中,你有不超过255个参数,而且IF公式的总长度不超过8192个字符。
- 在Excel 2003及以下版本中,参数不超过30个,而且你的IF公式的总长度不超过1024个字符。
嵌套的IF语句用于检查多个逻辑测试
如果你想在一个公式中评估多个逻辑测试,那么你可以将几个函数嵌套在一起。 这种函数被称为 嵌套的IF函数 当你希望根据逻辑测试的结果返回不同的值时,它们证明特别有用。
这里有一个典型的例子:假设你想把学生的成绩限定为" 良好 ", " 令人满意 "和" 贫穷 ",基于以下分数。
- 好:60或以上(>=60)。
- 满意:40至60之间(>40和<60)。
- 贫困:40或以下(<=40)。
在编写公式之前,请考虑你要嵌套的函数的顺序。 Excel将按照逻辑测试在公式中出现的顺序进行评估。 一旦一个条件评估为TRUE,后面的条件就不会被测试,这意味着公式在第一个TRUE结果之后就停止了。
在我们的案例中,这些函数从大到小排列。
=IF(B2>=60, "好", IF(B2>40, "满意", "差"))
当然,如果需要的话,你可以嵌套更多的函数(在现代版本中最多可以达到64个)。
更多信息,请参见如何在Excel中使用多个嵌套的IF语句。
Excel的IF数组公式有多个条件
另一种让Excel IF测试多个条件的方法是使用数组公式。
要用AND逻辑评估条件,请使用星号。
IF( 条件1 ) * ( 条件2 ) * ..., value_if_true, value_if_false)要用OR逻辑测试条件,使用加号。
IF( 条件1 ) + ( 条件2 ) + ..., value_if_true, value_if_false)要正确完成一个数组公式,请同时按下Ctrl + Shift + Enter键。 在Excel 365和Excel 2021中,由于支持动态数组,这也可以作为一个普通公式使用。
例如,如果B2和C2都大于50,要得到 "通过",公式是:。
=IF((B2>50) * (C2>50), "通过", "失败")
在我的Excel 365中,一个普通的公式就能正常工作(正如你在上面的截图中看到的那样)。 在Excel 2019及以下版本中,记得通过使用Ctrl + Shift + Enter快捷键使其成为一个数组公式。
要用OR逻辑评估多个条件,公式为:。
=IF((B2>50) + (C2>50), "通过", "失败")
与其他函数一起使用IF
本节解释了如何将IF与其他Excel函数结合起来使用,以及这给你带来了哪些好处。
例1.如果VLOOKUP中出现#N/A错误
当VLOOKUP或其他查找函数找不到东西时,它会返回一个#N/A的错误。 为了使你的表格看起来更漂亮,你可以在#N/A的情况下返回零、空白或特定的文本。为此,使用这个通用公式。
如果(isna(vlookup(...))。 价值_if_na , vlookup(...))比如说。
如果#N/A返回0。
如果E1中的查询值没有找到,则该公式返回0。
=if(isna(vlookup(e1, a2:b10, 2,false )), 0, vlookup(e1, a2:b10, 2, false)
如果#N/A,则返回空白。
如果没有找到查询值,该公式不返回任何东西(一个空字符串)。
=if(isna(vlookup(e1, a2:b10, 2,false )), "", vlookup(e1, a2:b10, 2, false)
如果#N/A,则返回某些文本。
如果没有找到查询值,公式会返回特定的文本。
=IF(ISNA(VLOOKUP(E1, A2:B10, 2,FALSE )), "未找到", VLOOKUP(E1, A2:B10, 2, FALSE)
更多的公式例子,请看Excel中的VLOOKUP与IF语句。
例2.带有SUM、AVERAGE、MIN和MAX函数的IF
要根据某些标准对单元格值进行求和,Excel提供了SUMIF和SUMIFS函数。
在某些情况下,你的业务逻辑可能需要在IF的逻辑测试中包括SUM函数。 例如,要根据B2和C2中的数值之和返回不同的文本标签,公式为:。
=IF(SUM(B2:C2)>130, "好", IF(SUM(B2:C2)>110, "满意", "差")
如果总和大于130,结果为 "好";如果大于110--"满意",如果110或更低--"差"。
以类似的方式,你可以将AVERAGE函数嵌入到IF的逻辑测试中,并根据平均分返回不同的标签。
=IF(AVERAGE(B2:C2)>65, "好", IF(AVERAGE(B2:C2)>55, "满意", "差")
假设总分在D列,你可以在MAX和MIN函数的帮助下确定最高和最低值。
=IF(D2=MAX($D$2:$D$10), "最佳结果", "" )
=IF(D2=MAX($D$2:$D$10), "最佳结果", "" )
要在一列中同时有两个标签,可以将上述函数嵌套到另一列中。
=IF(D2=MAX($D$2:$D$10), "最佳结果", IF(D2=MIN($D$2:$D$10), "最差结果", "" ))
同样,你可以将IF与你的自定义函数一起使用。 例如,你可以将它与GetCellColor或GetCellFontColor结合起来,根据单元格颜色返回不同的结果。
此外,Excel还提供了一些函数来根据条件计算数据。 关于详细的公式例子,请查看以下教程。
- COUNTIF - 计算符合某一条件的细胞数
- COUNTIFS--计算具有多个标准的细胞
- SUMIF - 有条件地对单元格求和
- SUMIFS - 对具有多个标准的单元格进行求和
例3.带有ISNUMBER, ISTEXT和ISBLANK的IF
为了识别文本、数字和空白单元格,Microsoft Excel提供了特殊的函数,如ISTEXT、ISNUMBER和ISBLANK。 通过将它们放在三个嵌套的IF语句的逻辑测试中,你可以一次性识别所有不同的数据类型。
=IF(ISTEXT(A2), "Text", IF(ISNUMBER(A2), "Number", IF(ISBLANK(A2), "Blank", "") ))
例4.IF和CONCATENATE
要将IF的结果和一些文本输出到一个单元格中,可以同时使用CONCATENATE或CONCAT(在Excel 2016 - 365中)和IF函数。 例如,。
=CONCATENATE("你的表现", IF(B1>100, "太棒了!", IF(B1>50, "好", "差"))
=CONCAT("你的表现", IF(B1>100, "太棒了!", IF(B1>50, "好", "差"))
看看下面的截图,你几乎不需要解释这个公式的作用。
Excel中的IF ISERROR/ISNA公式
现代版本的Excel有特殊的函数来捕获错误,并用另一个计算或预定义的值来代替它们--IFERROR(在Excel 2007及以后的版本中)和IFNA(在Excel 2013及以后的版本中)。 在早期的Excel版本中,你可以使用IF ISERROR和IF ISNA的组合来代替。
不同的是,IFERROR和ISERROR处理所有可能的Excel错误,包括#VALUE!、#N/A、#NAME?、#REF!、#NUM!、#DIV/0!和#NULL!而IFNA和ISNA只专门处理#N/A错误。
例如,要用你的自定义文本替换 "除以零 "的错误(#DIV/0!),你可以使用以下公式。
=if(iserror(a2/b2), "n/a", a2/b2)
关于Excel中IF函数的使用,我就说这么多了,感谢您的阅读,希望下周在我们的博客上见到您!
供下载的实践工作手册
Excel IF 多重标准 - 示例 (.xlsx 文件)