天天看點

别怕,IF函數其實很簡單

作者:Excel之家

小夥伴們好啊,今天咱們說一個看起來特别簡單,但是用處特别大的函數——IF。

如果有妹紙問你,這個周末準備怎麼過?

你會說:看天氣情況吧,不同的天氣,我的選擇也不一樣。

别怕,IF函數其實很簡單

每個包含“如果……那麼……否則……”的句子,在Excel的公式中,都可以使用IF函數将其翻譯成Excel的“語言”,改寫成Excel的“公式”,就是:

IF(周末是晴天嗎?和朋友去郊遊,去書店看書)

當然,這不是一個正确的Excel公式,但卻是IF函數思考和處理問題的邏輯。在這個“公式”中,IF函數就扮演了“如果……那麼……否則……”這組關聯詞的作用,而Excel處理IF函數的過程,就像你在岔道口選擇道路一樣。

别怕,IF函數其實很簡單

每個IF函數,都像一條一分二的岔道。公式每次走到IF的岔道口,都會對設定的條件進行判斷,再根據判斷的結果是TRUE還是FALSE,決定下一步前進的方向。

當你需要在多種結果中選擇一個時,可以讓IF函數替你完成。

例如,要為B2中的學生成績評定等次,等次隻有兩種:“及格”和“不及格”。評定的标準為:如果分數達到60分,那麼評定為及格,否則評定為不及格。

如果想讓IF函數替你解決這個問題,公式可以寫為:

别怕,IF函數其實很簡單

Excel收到你輸入的公式後,便會按你指定的評定标準去評定成績的等次。

别怕,IF函數其實很簡單

無論是用語言,還是文字,在描述一個問題時,都應該注意語序。“如果”和“那麼”的後面應該是什麼内容,并不是随意的,否則會影響表達效果。

别怕,IF函數其實很簡單

“如果”的後面是要判斷的條件,“那麼”的後面是條件成立時傳回的結果,“否則”的後面是條件不成立時傳回的結果。隻有按這個規則去設定IF的各個參數,Excel才會明白你的意圖。

IF共有3個參數,每個參數扮演不同的角色,隻有參數設定正确,Excel才會明白你的意圖。

别怕,IF函數其實很簡單

單個的函數作用和功能都是比較單一的,在解決實際問題時,往往需要多個函數嵌套使用,接下來再和大家分享幾個常用的IF函數嵌套組合。熟悉這些嵌套函數的使用,提高效率一丢丢還是有可能的。

如下圖,要對B2單元格中的分數進行判斷,大于60為“合格”,否則為“不合格”。

咱們就可以使用下面這個公式:

=IF(B2>60,"合格","不合格")

注意,在公式中直接傳回字元時,需要在字元前後加上一對半角的雙引号。

别怕,IF函數其實很簡單

如果B2大于60,B2>60部分傳回邏輯值TRUE,IF函數傳回第二參數指定的字元“合格”,否則傳回第三參數指定的字元“不合格”。

剛剛這個是單個條件的判斷,使用IF函數還能完成多個條件的判斷。

如下圖,要對B列的職務進行判斷,如果等于“秘書”,那麼補助為1000。如果不等于“秘書”,再繼續判斷,如果等于“助理”,那麼補助為800,否則為0。

别怕,IF函數其實很簡單

前面咱們說過,IF函數的第二參數和第三參數,可以是數值、文字,也可以是一段其他的公式。

這裡咱們就要将IF函數的第三參數也寫成一段新的IF函數,實作對B列的職務執行兩次判斷。

=IF(B2="秘書",1000,IF(B2="助理",800,0))

最外層的IF函數先判斷 B2="秘書" 的傳回結果是不是TRUE,如果是TRUE,就傳回第二參數指定的數值1000。

如果B2不等于秘書,“ B2="秘書"”得到FALSE,IF函數傳回第三參數的内容。

哪些才是最外層這個IF函數的第三參數呢?

對了,就是标記顔色的這部分 IF(B2="助理",800,0) 。

在“ B2="秘書"”的判斷結果為FALSE時,标記顔色的這部分開始幹活了,先來判斷“B2="助理"”的條件是否成立,如果這部分條件判斷傳回的是TRUE,則傳回裡面這個IF函數的第二參數800,否則傳回裡面這個IF函數的第三參數0。

如下圖,如果B列的崗位是秘書,并且C列的入職年限大于1,則補助1000元,否則補助為0。

别怕,IF函數其實很簡單

這裡要同時判斷兩列條件是不是符合,IF函數功力有限,需要請天山二佬——AND和OR函數來幫忙。

别怕,IF函數其實很簡單

AND函數和OR函數都是對多個參數傳回的邏輯值執行判斷。

差別在于:

當所有參數傳回的邏輯值都為TRUE時,AND函數才傳回TRUE。

而OR函數則是在任意一個參數傳回的邏輯值為TRUE時,就傳回邏輯值TRUE。

就像下圖中,4個護士(參數)分别判斷血正常正常嗎?心電圖正常嗎?肝功正常嗎?B超正常嗎?

當每個護士(參數)的判斷都是TRUE時,AND醫生最終才會下檢查結論:OK(TRUE),正常。

别怕,IF函數其實很簡單

下圖中,4個護士(參數)分别判斷血正常有問題嗎?心電圖有問題嗎?肝功有問題嗎?B超有問題嗎?

當任意一位護士(參數)的判斷是TRUE時,OR醫生就會下檢查結論:OK(TRUE),辦理住院手續吧。

别怕,IF函數其實很簡單

回到開始的問題,咱們要對崗位和入職年限兩個條件進行判斷,隻有當 崗位=“秘書”的判斷結果為TRUE,并且入職年限>1 的判斷結果也為TURE,才傳回補助1000元,這裡要用哪個醫生呢?對了,就是AND。

D2單元格輸入以下公式,向下複制到D8。

=IF(AND(B2="秘書",C2>1),1000,0)

别怕,IF函數其實很簡單

以D2單元格中的公式為例,B2="秘書"傳回的結果是FALSE,C2>1傳回的結果是TRUE,AND函數最終傳回FALSE。IF函數根據AND函數的結果為依據進一步進行判斷,最終傳回第三參數0。

假如咱們換一個判斷标準,如果 崗位=“秘書”,或者 入職年限>1,就給1000元的補助,隻有兩項都不符合,補助才是0。

這裡的判斷要求是多個條件符合其一,隻要把上面公式中的AND換成OR就可以。

=IF(OR(B2="秘書",C2>1),1000,0)

别怕,IF函數其實很簡單

以D2單元格中的公式為例,B2="秘書"傳回的結果是FALSE,C2>1傳回的結果是TRUE,OR函數最終傳回TRUE。IF函數根據OR函數的結果為依據進一步進行判斷,最終傳回第二參數1000。

再來說說按多個範圍區間判斷的問題。

如下圖,要根據B列的月收入進行判斷。

标準為:

月收入低于10000為貧困型;

月收入在10000至50000為溫飽型;

月收入大于50000為小康型。

别怕,IF函數其實很簡單

這裡要對B列的數值進行多輪判斷,就要用到多個IF函數的嵌套了。

咱們先把前面的判斷标準整理一下,先判斷B2是否小于10000,條件成立傳回“貧困型”;如果B2不小于10000,那就繼續判斷B2是否小于50000,條件成立傳回“溫飽型”;如果條件仍然不成立,就是月收入大于50000的那些了,傳回“小康型”。

把上面這幾句話換成IF函數的組合,是這樣的:

=IF(B2<10000,"貧困型",IF(B2<50000,"溫飽型","小康型"))

其中紅色部分的IF函數,就是前面這個IF函數的第三參數。先判斷藍色部分的條件,藍色部分的條件不成立時,再判斷紅色部分。

執行多區間判斷時,有一點需要特别注意:前面的判斷條件不能包含後面的判斷條件。

如果将公式寫成下面這樣,再看看結果,那就全部脫貧了。

=IF(B2<50000,"溫飽型",IF(B2<10000,"貧困型","小康型"))

别怕,IF函數其實很簡單

為什麼出現這種情況呢?

以B3單元格為例,如果先判斷2500<50000, 條件肯定是成立的,這時候IF函數傳回第二參數“溫飽型”,後面的就不再判斷啦。

剛剛咱們是從第一節車廂開始往後找的,其實也可以從最後一節車廂往前找。

下面這個公式,就是先從最高的标準開始判斷,然後逐級向下。

=IF(B2>=50000,"小康型",IF(B2>=10000,"溫飽型","貧困型"))

最後再補充一個小夥伴們經常容易出問題的地方,比如要判斷B2的數值是否在10000至50000之間,符合條件傳回“溫飽型”,不符合條件則傳回"待考察"。

下面這個公式結果顯然是不對的:

=IF(10000<B2<50000,"溫飽型","待考察")

别怕,IF函數其實很簡單

為什麼出現誤判呢?

其實這不怪IF,是咱們的寫法有問題了。

上面這個公式中,IF函數的第一參數10000<B2<50000,運算過程為:

先判斷10000<B2,結果得到邏輯值TRUE,然後再使用TRUE與50000進行比較。根據Excel中的潛規則,邏輯值是大于任何數值的,是以這一步就會傳回邏輯值FALSE,而IF函數也最終傳回第三參數的内容了。

正确的公式應該是這樣的:

=IF(AND(10000<B2,B2<50000),"溫飽型","待考察")

或者:

=IF(AND(B2>10000,B2<50000),"溫飽型","待考察")

除了上面這些基礎的内容,IF函數函數還被廣泛應用到數組公式中,這些内容咱們就留着以後再說啦。

好了,今天的内容就是這些,祝各位小夥伴一天好心情!

圖文制作:羅國發 祝洪忠