Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

如何善用EXCEL中的IF函數(shù)

2007-8-21 09:25| 發(fā)布者: admin| 查看: 4489| 評(píng)論: 0

if不可不用,不可多用  
先說(shuō)不可不用。 
if最善于解決非此即彼、非男即女、非陰即陽(yáng)、非前即后、非有即無(wú)的問(wèn)題。如果問(wèn)題的答案是二選其一,則除了if,沒(méi)有更好的辦法。比如學(xué)齡,以7歲為條件,if(年齡>=7,"已到學(xué)齡","未到學(xué)齡"),做這樣的判斷,任何函數(shù)方法都不會(huì)更簡(jiǎn)明于此了。 
如果我們的問(wèn)題都是這么簡(jiǎn)單就好了。 
有一個(gè)著名的數(shù)組公式,其內(nèi)核公式為:if(match(列起點(diǎn):列終點(diǎn),列起點(diǎn):列終點(diǎn),0)=row(列起點(diǎn):列終點(diǎn)),row(列起點(diǎn):列終點(diǎn)),""),作用是在一列中查找重復(fù)值各單項(xiàng)的所在行號(hào),這個(gè)if就是不可或缺,不可不用的,因?yàn)榈侥壳盀橹惯沒(méi)有其他更簡(jiǎn)明的辦法來(lái)達(dá)到用公式篩選重復(fù)值的目的。但說(shuō)穿了,if在這里所解決的,仍然還是一個(gè)非此即彼的問(wèn)題。 
再看一例:設(shè)A列為姓名,B列為數(shù)值,求姓名甲的數(shù)值合計(jì)。{=SUM(IF(A1:A15="甲",B1:B15))},其實(shí)也是一類(lèi)問(wèn)題,是{=SUM(IF(A1:A15="甲",B1:B15,0))}的一種簡(jiǎn)寫(xiě),叫做非甲即0。而在數(shù)組公式中,*號(hào)可以用來(lái)替代AND,+號(hào)則可以替代OR,因此也可以進(jìn)一步簡(jiǎn)寫(xiě)作{=SUM((A1:A15=F1)*B1:B15)},而且條件越多,越可以體現(xiàn)這種寫(xiě)法的優(yōu)點(diǎn),比如再加上一列月份,求甲在3月份的數(shù)值合計(jì),你可以省下兩個(gè)if,多用一個(gè)*號(hào)就可以了 
再來(lái)說(shuō)不可多用。 
為什么不可多用?大致是因?yàn)椋阂、?huì)增加公式寫(xiě)入的強(qiáng)度;二、降低公式的可讀性;三、降低運(yùn)算速率;四、不利于腦力的發(fā)揮和開(kāi)掘,使人懶惰。 
例一:A1為一個(gè)數(shù)值,其范圍為1-7,B1設(shè)置公式,按A1數(shù)值變化分別等于A-G。 
先來(lái)看看純粹使用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",""))))))) 
是不是很麻煩?何止是麻煩,假如再增加兩個(gè)條件,A1的數(shù)值范圍為1-26,B1相應(yīng)取值為A-Z,你又當(dāng)如何? 
if的嵌套最大可以為7層,上面的公式已經(jīng)用到了極限。雖然說(shuō)可以用一些旁門(mén)左道來(lái)“突破”這個(gè)限制,但也只是一種堆沙式的游戲,如上例,可以采用以下方式:=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何必還要學(xué)下去,還不如去跟兒子擺積木更好玩呢! 
所以說(shuō),if最好不要多用。不是說(shuō)不能用,而是說(shuō)用多了會(huì)叫人傷心。 
其實(shí)EXCEL里準(zhǔn)備了許多辦法來(lái)替代上面的愚蠢的做法。 
比如CHOOSE函數(shù)。=CHOOSE(A1,"a","b","c","d","e","f","g","h","i"),這是不是方便多了?CHOOSE的參數(shù)清單可以有29項(xiàng)之多,一般足夠你使用了。如果還不夠,那么請(qǐng)看下面: 
=LOOKUP(A1,{1,2,3,4,5,6,7,8,9;"a","b","c","d","e","f","g","h","i"}),你可以盡情地輸入?yún)?shù),只要公式內(nèi)容長(zhǎng)度允許(規(guī)定公式內(nèi)容長(zhǎng)度為1024個(gè)字符)。 
如果真的如例中所舉,只是生成A-Z等字母的話,則只需=CHAR(A1+64)就可以了。當(dāng)然,實(shí)際使用中這樣的巧合實(shí)在是太少了,但作為一種方法還是有提及的必要。 
一個(gè)if只能處理一個(gè)有無(wú)或是否的問(wèn)題,即使這個(gè)問(wèn)題可能是由諸多小的方面組合而成的。我們可以利用這一點(diǎn),來(lái)達(dá)到替代if使用的目的。 
例二:公司結(jié)算日期為每月24日,帳目的月份一欄,如果超過(guò)24日,就要記為下月。 
如果按照普通思路,公式應(yīng)該是這樣的:=IF(DAY(A1)>24,IF(MONTH(A1)=12,1,MONTH(A1)+1),MONTH(A1)) 
要用到兩個(gè)if判斷,外層的是判斷日期是否大于24,內(nèi)層的是判斷月份是否在12月,因?yàn)?2月的下月是1月而非13月,F(xiàn)在對(duì)比一下下面的公式: 
=MONTH(DATE(YEAR(A1),MONTH(A1)+1,0)+(DAY(A1)>24)) 
后者用了A1日期當(dāng)月最后一天的序列值,最重要的是后面加了一個(gè)由判斷是否大于24而生成的邏輯值,相當(dāng)于=if(day(a1)>24,1,0)。邏輯值在公式設(shè)置中是一個(gè)很重要的概念,是對(duì)問(wèn)題本身的邏輯關(guān)系的判斷,其中TRUE=1,F(xiàn)ALSE=0,生成的同樣是有無(wú)或是否的結(jié)果,用得恰當(dāng),會(huì)使你的公式格外生動(dòng)有趣。類(lèi)似的還有根據(jù)年齡計(jì)算性別、年齡的公式,也是使用邏輯值做判斷,具體見(jiàn)我以前的相關(guān)帖子,此處不在贅述。 
是不是一定要少用if,以至于該用的也想辦法不用?我曾經(jīng)說(shuō),最少用到if的公式往往是最好的公式。之所以用“往往”來(lái)做限制,就是因?yàn)槲覜](méi)有根據(jù)來(lái)做一定如此的定論。凡事都要實(shí)事求是,具體情況具體分析。 
例三:A1為性別,B1為年齡,C1標(biāo)注是否退休。條件是男60歲,女55歲。 
對(duì)這個(gè)問(wèn)題,=IF(OR(AND(A1="男",B1>=60),AND(A1="女",B1>=55)),"退","未退")只用到一個(gè)if,但未必就比=IF(B1-IF(A1="男",5)>=55,"退","未退")更簡(jiǎn)潔,盡管后者用到兩個(gè)if判斷。當(dāng)然我還是反對(duì)=IF(AND(A1="男",B1>=60),"退",IF(AND(A1="女",B1>=55),"退","未退"))這種用法的。

最新評(píng)論

相關(guān)分類(lèi)

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 08:32 , Processed in 0.078002 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部