对于Excel2007、2010版本IF函数有了增强,可以超过7层嵌套(达到64层),但对于还在使用Excel2003(或者为了兼容Excel2003)的朋友来说,只能使用间接方法来突破7层嵌套了。 注意:如果使
对于Excel2007、2010版本IF函数有了增强,可以超过7层嵌套(达到64层),但对于还在使用Excel2003(或者为了兼容Excel2003)的朋友来说,只能使用间接方法来突破7层嵌套了。
注意:如果使用Excel2010版本的IF函数超过7层,要将文件保存为.XLSM、.Xlam、.Xlsx等格式,不能保存为兼容Excel2003的.Xls、Xla之类的格式。
①使用CHOOSE函数替代IF函数:
=CHOOSE(FIND("1",(条件1)*1&(条件2)*1&……&(条件N)*1),结果1,结果2,……结果N)
说明:所有条件的判断结果组成一个包含0和1的字符串(条件真得到1,条件假得到0),用FIND函数找到1的位置(条件真的位置),用CHOOSE函数得到相应结果。最多可以满足29个条件,如果超过29个条件还可以嵌套。
②还原HLOOKUP函数的原型求解:
=HLOOKUP(A1,{条件1,条件2……条件N;结果1,结果2……结果N},2,1)
说明:这一方法的条件数量不爱限制。
例一:A1为一个数值,其范围为1-7,B1设置公式,按A1数值变化分别等于A-G。
先来看看纯粹使用if的解法:=IF(A1=1,"a",IF(A1=2,"b",IF(A1=3,"c",IF(A1=4,"d",IF(A1=5,"e",IF(A1=6,"f",IF(A1=7,"g","")))))))
是不是很麻烦?何止是麻烦,假如再增加两个条件,A1的数值范围为1-26,B1相应取值为A-Z,你又当如何?
if的嵌套最大可以为7层,上面的公式已经用到了极限。虽然说可以用一些旁门左道来“突破”这个限制,但也只是一种堆沙式的游戏,如上例,可以采用以下方式:=IF(A1=1,"a",IF(A1=2,"b",IF(A1=3,"c",IF(A1=4,"d",IF(A1=5,"e",IF(A1=6,"f",IF(A1=7,"g","")))))))&IF(A1=8,"h",IF(A1=9,"I",""))……
其实EXCEL里准备了许多办法来替代上面的做法。
比如CHOOSE函数。=CHOOSE(A1,"a","b","c","d","e","f","g","h","i"),这是不是方便多了?CHOOSE的参数清单可以有29项之多,一般足够你使用了。
如果还不够,那么请看下面:
=LOOKUP(A1,{1,2,3,4,5,6,7,8,9;"a","b","c","d","e","f","g","h","i"}),你可以尽情地输入参数,只要公式内容长度允许(规定公式内容长度为1024个字符)。
③将七层之外的IF语句,放在另外的单元格内来处理,例:C5=if(if,...,(if...),B5))),B5单元格就是存放七层之外的IF语句。
④在单元格中输入公式=IF(A1=1,"A",IF(A1=2,"B",IF(A1=3,"C",IF(A1=4,"D",IF(A1=5,"E",IF(A1=6,"F",IF(A1=7,"G",IF(A1=8,"H",""))))))))&IF(A1=9,"I",IF(A1=10,"J",IF(A1=11,"K",IF(A1=12,"L",IF(A1=13,"M",IF(A1=14,"N",IF(A1=15,"O",IF(A1=16,"P",""))))))))&
IF(A1=17,"Q",IF(A1=18,"R",IF(A1=19,"S",IF(A1=20,"T",IF(A1=21,"U",IF(A1=22,"V",IF(A1=23,"W",IF(A1=24,"X",""))))))))&IF(A1=25,"Y",IF(A1=26,"Z",""))
⑤=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(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,""))
⑦利用定义名称=IF(OneToSix,OneToSix,SevenToThirteen)
⑧{=MIN(IF({TRUE,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE}*1={1,1,1,1,1,1,1,1,1,1},{1,2,3,4,5,6,7,8,9,10}))}
(责任编辑:admin) |