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自己就可以搞定,到了第二個二岔路口,它腦細胞用完了,怎麼辦呢?趕緊生個孩子,讓它去繼續探路吧,又到了下一個路口,孩子的兩個腦細胞也用完了,怎麼辦呢?沒事,反正生函數又不犯法,再生一個,繼續探路吧……
如此延續,IF函數最多能生64個孩子,也就是說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函數也就必然會返回第三參數所對應的值:假空。
好了,今天的内容就是這樣吧,下期再見~
圖文制作:看見星光
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!