| |
Excel中的IF函数在工作表中起简单地判断使用. 它有三个参数:
- 以开始的值为条件(返回TRUE 或 FALSE)
- 如果条件为TRUE 则显示这个值
- 如果条件为FALSE 则显示这个值
在下面公式示例中, 如果单元格A1包含"A"则返回1. 如果单元格A1不包含 "A", 公式结果返回空白.
=IF(A1="A",1,"")
为了完成较为复杂的判断, 你可以在一个公式中"嵌套"使用IF函数. 换句话说, 你可以在IF函数的第二个参数中再次使用IF函数. 请看下面示例:
=IF(A1="A",1,IF(A1="B",2,IF(A1="C",3,"")))
这个公式检查A1单元格. 如果它包含 "A", 公式返回1. 如果它不包含"A", 执行第二个参数. 这又是一个IF函数,判断A1 是否包含"B". 是则返回2;否则, 公式执行第二个参数中包含的又一个IF函数,检查单元格A1中是否包含"C". 包含则返回3; 否则返回空白.
Excel最多只允许IF函数有7层“嵌套”,下面的公式虽然正确,但结果可以会产生错误,因为它超过了限制嵌套的层数(这里为8层).
=IF(A1="A",1,IF(A1="B",2,IF(A1="C",3,IF(A1="D",4, IF(A1="E",5,IF(A1="F",6,IF(A1="G",7,IF(A1="H",8,""))))))))
下面讲述的内容就是告诉你突破嵌套层数限制的几种方法。应该注意的是:并非在任何情况下这些方法都适应.
使用VLOOKUP 公式
多数情况下, 你可以使用VLOOKUP函数替代IF函数. 这需要在工作表中建一个单独的表格. 下面示例中, 查找的表格在B1:C10. 公式在A2为:
=VLOOKUP(A1,B1:C10,2)
使用定义的名称
另外一种突破IF函数嵌套层数限制的方法是在公式中使用名称. 这个技巧在另外一个页面专门介绍, 在此不再重复.
使用CONCATENATE函数
这种方法实现的原理是, 函数CONCATENATE 的每一个参数都使用一个 IF 函数. 例如:
=CONCATENATE(IF(A1="A",1,""),IF(A1="B",2,""),IF(A1="C",3,""), IF(A1="D",4,""),IF(A1="E",5,""),IF(A1="F",6,""),IF(A1="G",7,""), IF(A1="H",8,""),IF(A1="I",9,""),IF(A1="J",10,""))
CONCATENATE函数允许使用30个参数 – 相当于可以检验30个不同的条件.如果超过30个条件,可以参考下列方法解决。
Alan Williams指出, 你也可以不使用CONCATENATE函数而在公式中使用连接符 (&):
=IF(A1="A",1,"")&IF(A1="B",2,"")&IF(A1="C",3,"") &IF(A1="D",4,"")&IF(A1="E",5,"")&IF(A1="F",6,"") &IF(A1="G",7,"")&IF(A1="H",8,"")&IF(A1="I",9,"") &IF(A1="J",10,"")
这种方法可以突破30个条件的限制.
使用乘法
另一种方法是使用乘法. 这个技巧的原理是, 使用乘法时, TRUE被看成1 ,FALSE被视为 0. 这是一个示例:
=(A1="A")*1+(A1="B")*2+(A1="C")*3+(A1="D")*4+(A1="E")*5 +(A1="F")*6+(A1="G")*7+(A1="H")*8+(A1="I")*9+(A1="J")*10
创建一个自定义的VBA函数
这种方法的优点是,你可以根据自己的需要设计定制函数, 并且公式可以精简很多.
|