一、先说不可不用。 s3O} 6
if最善于解决非此即彼、非男即女、非阴即阳、非前即后、非有即无的问题。如果问题的H答案H是二选其一,则除了if,没有更好的办法。比如学龄,以7岁为条件,if(H年龄H>=7,"已到学龄","未到学龄"),做这样的判断,任何函数方法都不会更简明于此了。 C>$E%=h+_
如果我们的问题都是这么简单就好了。 7,|c
有一个著名的数组公式,其内核公式为:if(match(列起点:列终点,列起点:列终点,0)=row(列起点:列终点),row(列起点:列终点),""),作用是在一列中查找重复值各单项的所在行号,这个if就是不可或缺,不可不用的,因为到目前为止还没有其他更简明的办法来达到用公式筛选重复值的目的。但说穿了,if在这里所解决的,仍然还是一个非此即彼的问题。 Jd(,/q
再看一例:设A列为H姓名H,B列为数值,求姓名甲的数值合计。{=SUM(IF(A1:A15="甲",B1:B15))},其实也是一类问题,是{=SUM(IF(A1:A15="甲",B1:B15,0))}的一种简写,叫做非甲即0。而在数组公式中,*号可以用来替代AND,+号则可以替代OR,因此也可以进一步简写作{=SUM((A1:A15=F1)*B1:B15)},而且条件越多,越可以体现这种写法的优点,比如再加上一列月份,求甲在3月份的数值合计,你可以省下两个if,多用一个*号就可以了(自己试试?) y[\VUzD*'
二、再来说不可多用。 jJY"{foWV
为什么不可多用?大致是因为:一、会增加公式写入的强度;二、降低公式的可读性;三、降低运算速率;四、不利于脑力的发挥和开掘,使人懒惰。 S<u-n8bv
例一:A1为一个数值,其范围为1-7,B1设置公式,按A1数值变化分别等于A-G。 {Jx4xpvPo
先来看看纯粹使用if的解法: *R3f{/DK
=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",""))))))) 'u_t<