Excel嵌套IF语句--实例、最佳实践和替代方案

  • Share This
Michael Brown

本教程介绍了如何在Excel中使用嵌套的IF函数来检查多个条件。 你还将学习其他一些函数,它们可能是在Excel中使用嵌套公式的良好替代方案。

你通常如何在你的Excel工作表中实现决策逻辑? 在大多数情况下,你会使用一个IF公式来测试你的条件,如果满足条件,返回一个值,如果不满足条件,返回另一个值。 为了评估一个以上的条件,并根据结果返回不同的值,你把多个IF嵌套在彼此之间。

虽然非常流行,但嵌套的IF语句并不是在Excel中检查多个条件的唯一方法。 在本教程中,你会发现一些绝对值得探索的替代方法。

    Excel嵌套的IF语句

    下面是经典的Excel嵌套IF公式的通用形式。

    IF( 条件1 , 结果1 , IF( 条件2 , 结果2 , IF( 条件3 , 结果3 , 结果4 )))

    你可以看到,每个后续的IF函数都被嵌入到了 value_if_false 每个IF函数都用自己的小括号括起来,但所有的小括号都在公式的最后。

    我们的通用嵌套IF公式评估了3个条件,并返回4个不同的结果(如果没有一个条件是TRUE,则返回结果4)。 翻译成人类语言,这个嵌套IF语句告诉Excel做以下事情。

    测试 条件1 , 如果是TRUE - 返回 结果1 , 如果是FALSE -

    测试 条件2 , 如果是TRUE - 返回r esult2 , 如果是FALSE -

    测试 条件3 , 如果是TRUE - 返回 结果3 , 如果是FALSE -

    返回 结果4

    作为一个例子,让我们根据一些卖家的销售量来找出他们的佣金。

    委员会 销售
    3% $1 - $50
    5% $51 - $100
    7% $101 - $150
    10% 超过150美元

    在数学中,改变加数的顺序不会改变总和,而在Excel中,改变IF函数的顺序会改变结果。 为什么呢? 因为嵌套的IF公式会返回一个对应于 第一个TRUE条件 因此,在你的嵌套IF语句中,按照正确的方向安排条件是非常重要的--从高到低或从低到高,这取决于你的公式逻辑。 在我们的例子中,我们先检查 "最高 "条件,然后是 "第二高",以此类推。

    =IF(B2>150, 10%, IF(B2>=101, 7%, IF(B2>=51, 5%, IF(B2>=1, 3%, "" ))))

    如果我们按照相反的顺序,从下往上放置条件,结果就会完全错误,因为我们的公式会在第一个逻辑测试(B2>=1)后停止任何大于1的值。比方说,我们有100美元的销售额--它大于1,所以公式就不会检查其他条件,并返回3%作为结果。

    如果你想把条件从低到高排列,那么就使用 "小于 "运算符,先评估 "最低 "条件,然后是 "第二低",以此类推。

    =IF($B2<1, 0%, IF($B2<51, 3%, IF($B2<101, 5%, IF($B2<=150, 7%, 10%))))

    正如你所看到的,要正确构建一个嵌套的IF语句的逻辑,需要花很多心思。 虽然微软Excel允许在一个公式中嵌套多达64个IF函数,但这并不是你真正想在工作表中做的事情。 因此,如果你(或其他人)正在凝视你的Excel嵌套IF公式,试图弄清楚它到底是做什么的,现在是时候了重新考虑你的策略,并可能在你的武器库中选择另一种工具。

    更多信息,请参见Excel嵌套IF语句。

    带有OR/AND条件的嵌套IF

    如果你需要评估几组不同的条件,你可以使用OR以及AND函数来表达这些条件,将这些函数嵌套在IF语句中,然后再将IF语句相互嵌套。

    在Excel中用OR语句嵌套IF

    通过使用OR函数,你可以在每个IF函数的逻辑测试中检查两个或多个不同的条件,如果任何(至少一个)OR参数评估为TRUE,则返回TRUE。 要了解它的实际工作情况,请考虑以下例子。

    假设你有两列销售额,例如B列中的一月份销售额和C列中的二月份销售额。 换句话说,你建立一个公式,其逻辑如下:如果一月份或二月份的销售额大于150美元,卖家可以得到10%的佣金,如果一月份或二月份的销售额大于或等于101美元,卖家得到7%的佣金,以此类推。

    要做到这一点,可以写一些OF语句,如OR(B2>150, C2>150),并将它们嵌套到上面讨论的IF函数的逻辑测试中。 结果是,你得到这个公式。

    =IF(OR(B2>150, C2>150), 10%, IF(OR(B2>=101, C2>=101),7%, IF(OR(B2>=51, C2>=51), 5%, IF(OR(B2>=1, C2>=1), 3%, "" ))))

    并根据较高的销售金额分配佣金。

    更多公式实例,请参见Excel IF OR 语句。

    在Excel中用AND语句嵌套IF

    如果你的逻辑测试包括多个条件,并且所有这些条件都应该评估为 "真",那么就用AND函数来表达。

    例如,如果要根据较低的销售数量分配佣金,可以采用上述公式,用AND语句代替OR语句。 换句话说,你告诉Excel只有在1月和2月的销售额大于150美元时才返回10%,1月和2月的销售额大于或等于101美元时返回7%,以此类推。

    =IF(AND(B2>150, C2>150), 10%, IF(AND(B2>=101, C2>=101), 7%, IF(AND(B2>=51, C2>=51), 5%, IF(AND(B2>=1, C2>=1), 3%, "" ))))

    结果,我们的嵌套IF公式根据B列和C列中较低的数字来计算佣金。如果任何一列是空的,就根本没有佣金,因为没有满足AND条件。

    如果你想返回0%而不是空白单元格,请将最后一个参数中的空字符串(''")替换为0%。

    =IF(AND(B2>150, C2>150), 10%, IF(AND(B2>=101, C2>=101), 7%, IF(AND(B2>=51, C2>=51), 5%, IF(AND(B2>=1, C2>=1), 3%, 0% ))))

    更多信息可以在这里找到:Excel IF有多个AND/OR条件。

    在Excel中用VLOOKUP代替嵌套的IF

    当你处理 "尺度 "时,即连续的数值范围一起覆盖整个范围,在大多数情况下,你可以使用VLOOKUP函数而不是嵌套的IFs。

    首先,制作一个参考表,如下面的截图所示。 然后,建立一个Vlookup公式,其中包括 近似匹配 ,即与 范围查询 参数设置为TRUE。

    假设查询值在B2,参考表是F2:G5,公式如下。

    =vlookup(b2,$f$2:$g$5,2,true)

    请注意,我们修复了 表_数组 用绝对引用($F$2:$G$5)将公式正确复制到其他单元格。

    通过将Vlookup公式的最后一个参数设置为TRUE,你告诉Excel去搜索 最匹配的 - 如果没有找到完全匹配的值,则返回小于查找值的下一个最大值。 因此,你的公式不仅会匹配查找表中的精确值,而且还会匹配介于两者之间的任何值。

    例如,B3的查询值是$95,这个数字在查询表中不存在,在这种情况下,精确匹配的Vlookup会返回#N/A错误。 但是,近似匹配的Vlookup继续搜索,直到找到最近的小于查询值的值(在我们的例子中是$50),并从同一行的第二列返回一个值(是5%)。

    但如果查询值小于查询表中最小的数字或查询单元格是空的怎么办? 在这种情况下,Vlookup公式将返回#N/A错误。 如果这不是你实际想要的,将VLOOKUP嵌套在IFERROR内,当查询值未找到时,提供输出值。 例如。

    =IFERROR(VLOOKUP(B2, $F$2:$G$5, 2, TRUE), "超出范围")

    重要提示!为了使近似匹配的Vlookup公式能够正确工作,查询表中的第一列必须按以下方式排序 升序 从最小到最大。

    更多信息,请参见精确匹配VLOOKUP与近似匹配VLOOKUP。

    IFS语句作为嵌套IF函数的替代品

    在Excel 2016及以后的版本中,微软引入了一个特殊函数来评估多个条件--IFS函数。

    一个IFS公式可以处理多达127个 逻辑_测试 / value_if_true 对,而第一个评估为 "真 "的逻辑测试 "赢"。

    IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2] ...)

    根据上述语法,我们的嵌套IF公式可以这样重构。

    =IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%)

    请注意,如果没有一个指定的条件得到满足,IFS函数会返回#N/A错误。 为了避免这种情况,你可以再添加一个 逻辑_测试 / value_if_true 到你的公式的末尾,如果前面的逻辑测试没有一个是TRUE,它将返回0或空字符串("")或任何你想要的值。

    =IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%, TRUE, "" )

    因此,如果B列中的相应单元格是空的或包含文本或负数,我们的公式将返回一个空字符串(空白单元格)而不是#N/A错误。

    注意:与嵌套的IF一样,Excel的IFS函数返回一个与第一个评估为TRUE的条件相对应的值,这就是为什么IFS公式中逻辑测试的顺序很重要。

    更多信息,请参见Excel IFS函数代替嵌套IF。

    在Excel中用CHOOSE代替嵌套的IF公式

    在Excel中测试单个公式中的多个条件的另一种方法是使用CHOOSE函数,该函数旨在根据该值的一个位置从列表中返回一个值。

    应用于我们的样本数据集,该公式具有以下形状。

    =CHOOSE((B2>=1) +(B2>=51) +(B2>=101) +(B2>150), 3%, 5%, 7%, 10%)

    在第一个参数( index_num 鉴于TRUE等于1,FALSE等于0,这样就可以计算出要返回的值的位置。

    例如,B2的值是150美元,对于这个值,前3个条件是 "真",最后一个条件(B2> 150)是 "假"。 所以。 index_num 等于3,意味着返回第3个值,即7%。

    提示:如果没有一个逻辑测试为 "真"。 index_num 一个简单的解决方法是将CHOOSE包裹在IFERROR函数中,像这样。

    =IFERROR(CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%), "")

    欲了解更多信息,请参见Excel CHOOSE函数与公式实例。

    SWITCH函数是Excel中嵌套IF的一种简洁的形式

    在你处理一组固定的预定义值而不是刻度的情况下,SWITCH函数可以成为复杂的嵌套IF语句的一个紧凑的替代方案。

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

    SWITCH函数评估了 表情 对照列表中的 价值 并返回 结果 对应于第一个发现的匹配。

    如果,你想根据以下等级计算佣金,而不是销售金额,你可以在Excel中使用这种紧凑的嵌套IF公式。

    =switch(c2, "a", 10%, "b", 7%, "c", 5%, "d", 3%, "" )

    或者,你可以像下面的截图那样制作一个参考表,并使用单元格参考而不是硬编码值。

    =switch(c2, $f$2, $g$2, $f$3, $g$3, $f$4, $g$4, $f$5, $g$5, "" )

    请注意,我们锁定了所有的引用,除了第一个带有$符号的引用,以防止在将公式复制到其他单元格时它们发生变化。

    注意:SWITCH功能仅在Excel 2016及以上版本中可用。

    欲了解更多信息,请参见SWITCH函数--嵌套IF语句的紧凑形式。

    在Excel中串联多个IF函数

    正如前面的例子所提到的,SWITCH函数只在Excel 2016中引入。 要在旧的Excel版本中处理类似的任务,你可以通过使用连接运算符(&)或CONCATENATE函数来组合两个或多个IF语句。

    比如说。

    =(IF(C2="a", 10%, "") & IF(C2="b", 7%, "") & IF(C2="c", 5%, "") & IF(C2="d", 3%, "") )*1

    =CONCATENATE(IF(C2="a", 10%, ""), IF(C2="b", 7%, ""), IF(C2="c", 5%, "") & IF(C2="d", 3%, "") )*1

    你可能已经注意到,我们在两个公式中都将结果乘以1。 这样做是为了将串联公式返回的字符串转换为数字。 如果你的预期输出是文本,那么就不需要进行乘法运算。

    更多信息,请参见Excel中的CONCATENATE函数。

    你可以看到,Microsoft Excel为嵌套IF公式提供了一些很好的替代方案,希望本教程能给你一些线索,告诉你如何在你的工作表中利用它们。 要想仔细看看本教程中讨论的例子,欢迎你下载我们下面的样本工作簿。 感谢你的阅读,希望下周在我们的博客上见到你!

    供下载的实践工作手册

    Excel嵌套If语句--实例(.xlsx文件)

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.