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