IF是Excel中最基礎最常用的函式之一。 它可以根據指定條件是否成立,返回對應的結果。 官方簡歷如下:
IF(餵~談個條件吧,如果條件成立怎麽怎麽著,如果條件不成立又怎麽怎麽著)
數一數,一共有三個參數。
第1個參數是必須的,是一個結果為真或假的任意運算式,也就是判斷條件。
第2個參數是可選的,當判斷條件成立時,返回的指定結果。
第3個參數也是可選的,當判斷條件不成立時,返回的指定結果。
舉個例子
=IF(B2>=60,"及格","不及格")
B2>=60是一個運算式,判斷B2單元格的值是否大於等於60。
如果運算式成立,會得到邏輯值TRUE,也就是說B2>=60這事是真的。
如果不成立呢,會得到邏輯值FALSE,也就是說B2>=60這事是假的。
當B2>=60這事是真的,我們就去找第二個參數,於是得到結果,及格。
當這事是假的,那我們就去找第三個參數,於是得到結果,不及格。
假如B2是數值99,猜一猜,下面這條IF函式會返回什麽結果?
=IF(B2>=60,"不及格","及格")
多層巢狀
我們上面舉了個成績考評的例子,把成績分為了及格和不及格兩種。
在實際生活中,這顯然很不靠譜。
你說作為一位人民教師,怎麽能犯這種非是即否的思維錯誤呢?
你把60分以下的都叫做不及格——那就算了,怎麼能把60分以上的都叫做及格呢? 這對孩子的幼小心靈造成了多大的打擊? 你怎麽著得劃分個優秀出來吧? ——來自多位優秀生家長的質問。
好吧,為了和諧社會,咱們只能把公式修改一下:
=IF(B2<60,"不及格",IF(B2>90,"優秀","及格"))
公式先計算B2單元格的值是否小於60,如果成立則返回「不及格」,如果B2的值大於或等於60呢? 公式繼續往右走,到第三個參數那裏,第三參數是一個IF函式,它先判斷B2的值是否大於90,如果成立,則返回優秀,不然就統統返回及格。
第2個IF函式是第1個IF的巢狀函式,用於解決第1個IF條件為假時的分支問題。
這就好比走路,IF這家夥只有兩個腦細胞,第一個二叉路口,IF自己就可以搞定,到了第二個二岔路口,它腦細胞用完了,怎麽辦呢? 趕緊生個孩子,讓它去繼續探路吧,又到了下一個路口,孩子的兩個腦細胞也用完了,怎麽辦呢? 沒事,反正生函式又不犯法,再生一個,繼續探路吧……
如此延續,Excel最多支持64個不同的IF函式巢狀。
……
一條優秀的IF函式巢狀公式,通常都是從假的一端不斷延伸,而不會一會兒真端,一會兒假端。
這句話是什麽意思呢?
還是舉個栗子。
假設成績大於80分的家長,同樣不滿意學生的評級制度,要求增加一個「良好」。
好吧,我們只能把評級規則再修改一下,小於60的,都是不及格; 60-80及格; 80-90為良好; 90分以上優秀。
有朋友此時可能會把IF函式寫成這樣:
=IF(B2>90,"優秀",IF(B2>60,IF(B2>80,"良好","及格"),"不及格"))
盡管這公式能得到正確的結果,但閱讀起來邏輯很不清楚。
它的路徑是這樣的,一會兒從「假」的路徑上分叉,提出判斷條件,一會兒又從「真」的路徑上分叉,提出判斷條件。
換個寫法:
=IF(B2>90,"優秀",IF(B2>80,"良好",IF(B2>60,"及格","不及格")))
這樣邏輯是不是就清楚多了?
它的路徑如下圖,一直在從「假」的路徑上分叉,層層推進。
……
IF函式簡單又好用,但是當IF函式巢狀超過三層時,必然會有更高效更簡潔的函式代替它工作。
會是哪些函式呢?
AND和OR函式
這節我們來講下IF函式的多條件判斷問題。
多條件判斷分為兩種情況,一種是「並且」關系,一種是「或」關系。
什麽是「並且」關系呢?
並且關系指的是多個條件都同時成立,結果方才為真的情況。
比如說,你的電腦有三個盤,分別是C槽、D槽和G槽。 現在防毒,C槽沒有毒,D槽沒有毒,G槽也沒有毒,三個的條件都成立,OK,我們可以得出結論你的電腦沒中毒,你是個老實人。 但倘若其中任意一個盤有毒,那你就不能說自己電腦沒中毒了,看我小眼神,對不對?
這就是一種典型的「並且」關系問題。
如何使用函式判斷「並且」關系是否成立呢?
函式新人通常會使用AND函式。
其語法如下:
=AND(條件1,條件2,條件3,條件n……)
舉個實際公式的例子。
=AND(2>1,3>2,4>3)
AND函式包含了三個條件,每個條件計算結果都為TRUE,也就是說每個條件都成立,計算結果返回TRUE。
但倘若哪怕有一個條件為假,比如公式:
=AND(1>2,3>2,4>3)
結果即為FALSE
……
舉個HR常見的小栗子:
以下圖所示數據表例,假設女性55歲退休,男 性 60歲退休,現在我們需要計算數據列表中的女性是否應該退休……
D列公式如下:
=IF(AND(B2="女",C2>55),"退休","")
AND函式是一個運算式,作為IF函式的第一參數,有兩個判斷條件,一個是B2單元格性別是否為「女」,另一個是C2單元格的年齡是否大於55,只有兩個條件都成立,AND結果才返回TRUE。
當AND函式結果為TRUE,IF函式返回值「退休」,否則返回假空""。
……
……
說完了「並且」關系,我們再聊下「或」關系。
「或」關系剛好和「並且」關系唱反調,「並且」關系認為所有的條件都成立,才算數兒。 「或」關系不這麽認為,它覺得做人要大度,有一個條件成立就算OK了,只有所有條件都不成立時,才不算數。
如果「並且」和「或」去談戀愛,他們的愛情觀大概是這樣的。 「並且」覺得愛情像眼睛,容不下一粒沙子,有一粒沙子咱們就拜拜吧。 「或」覺得愛情像沙子,抓的越緊,漏的越多,所以能抓住一個條件就行了——說實話,你喜歡誰? ——你又是誰?
舉個栗子,如下圖所示,是一張成績表,我們要判斷A列學生是不是優秀生,規則是只要語文或數學有一門成績大於90分即可。
D列公式如下:
=IF(OR(B2>90,C2>90),"優秀","")
OR函式是一個運算式,作為IF函式的第一參數,有兩個判斷條件,分別判斷語文和數學的成績是否大於90分,如果有一個條件成立,則OR函式返回TRUE。
當OR函式結果為TRUE時,IF函式返回值「優秀」,否則返回假空。
好吧,換下規則——和雙科均優秀生的家長無關——只有當語文和數學雙科成績都大於90分時,才可以評定為優秀生,公式又該如何書寫呢?
你來!
……
小貼士:
我有時會見到有人將「並且」關系的邏輯運算式寫成下面這樣。
=IF(60<B2<80,"良好","")
從人類思維的角度講,這麽寫,倒也沒錯,但問題是——Excel它不是人啊 。
你想的是比較B2單元格的值是不是大於60同時小於80,但Excel不這麽算。
它會照常從左向右算,先算B2的值是不是大於60,於是返回邏輯值TRUE或FALSE,然後再和80比較誰大誰小。 我們之前講過,不管是TRUE還是FALSE,作為邏輯值都比數值大,所以60<B2<80必然返回結果FALSE,不論B2單元格的值是大是小,整條IF函式也就必然會返回第三參數所對應的值: 假空。
好了,今天的內容就是這樣吧,下期再見~
圖文制作:看見星光