文/施娟儀 首發於一周進步
想當年(其實也就是去年),一次計算機課上老師給了一份 Excel 工作簿文件:「這次課大家練習 If 函數的使用,其中 If 的嵌套是比較有難度的。大家看書開始練習吧!」
作為一個名副其實的 Excel 小白,我一本正經地在單元格中模(chao)仿(xi)下課本講解的公式:
=IF(E30>=90,"優秀",IF(E30>=80,"良好",IF(E30>=60,"及格","不及格")))
然後若有所思地體會了它的奧妙。好的!我記住了!把它刪除,自己再做一遍!
結果就像打開書「馬冬梅」,關上書「馬什麼梅」一樣老是記不住,不是缺胳膊就是少腿。
直到後來真正學習了Excel,我才知道,If 嵌套待我如初戀,我卻待它如魔鬼。
下面看怎麼把魔鬼變成天使,順便提出解決此類多區間條件判斷問題的其他途徑。
01. 為什麼起初接觸 If 嵌套覺得難?
① 繞不明白 If 的判斷邏輯
If 函數只有三個參數:
【條件】,【符合條件的話顯示什麼】,【不符合的話顯示什麼】。
If 嵌套就是因為在不符合條件的時候又多出了第三者。
比如上面這道題,不符合 >=90 的條件時不是直接判斷良好,而是繼續劃分是否 >=80、>=60。可以用一個思維導圖搞定邏輯:
這樣一步步補充參數,就不會老是一會兒少半邊括號一會兒少掉個雙引號了~
② 函數錄入的姿態不夠端莊
上小管老師的 Excel 課,老師一句話讓我暗笑了好久:
「下面請注意我操作的姿態~」
這裡借用一下 haha,錄入函數參數最好結合名稱框錄入,下面請注意我操作的姿態:
每次到不符合條件的時候,就到名稱框下拉按鈕中選擇 IF ,繼續下一個條件的錄入。(如果此時的輸入狀態是英文,那麼名稱框中會自動感應出 IF ,而不用在下拉按鈕中選擇)
另外,參數錄入框中的切換用 tab 來代替滑鼠點擊,可以提高效率,比如錄入 E30>=90 後,按下 tab 輸入優秀,以此類推。
02. vlookup 函數的較量
除了 If 嵌套,這類多區間條件判斷問題還可以用 vlookup 函數近似查詢。
先認識下vlookup近似查詢的四個參數:
【想找誰】,【在哪個區域找】,【把區域中第幾列引用回來】,【1】
這裡1是固定的,表示近似查詢。
結果是:=VLOOKUP(E30,$K$30:$L$33,2,1)。
咦,怎麼式子短了那麼多?因為有它:
這個對照表是我們使用 vlookup 函數解決此類問題的關鍵,它必須符合兩個條件:
第一,判斷的條件為數字,比如分數0-100為數字;
第二,對照表中的數字部分必須升序排列。
下面看下解決過程:
【想找誰】:分數,引用第一個分數的單元格 E30。
【在哪個區域找】:對照表 $K$30:$L$33(這裡要加上 $ 把這個區域固定住,防止向下填充時區域隨意躁動跟著往下挪動)。
【把區域中第幾列引用回來】:返回對照表第2列判斷等級,所以參數是2。
【1】:近似查詢,查詢的分數會往對照表中較小的值靠攏,得出等級。比如第一個分數是82 分,那麼它會向對照表的 80 分靠攏,得出等級良好。
03. lookup 也來湊熱鬧
只是比 vlookup 少了個 v ,式子就能再短一些嗎?
還真是:=LOOKUP(E30,$K$30:$L$33)
lookup 只需要錄入 vlookup 的前兩個參數即可,所以依舊需要上面的對照表:
04. 自定義單元格格式,直接分數換等級
如果我們想直接在單元格原地把分數換成等級,就要利用自定義單元格格式。
選中分數區域,打開【設置單元格格式】,選擇自定義,輸入[>=80]優秀;[>=60]及格;不及格。條件用中括號引起,分號為英文狀態下的分號。
duang 的一下!
你會發現我怎麼悄咪咪把成績範圍和對應的等級給改了……咱不是90分以上才優秀嗎?
其實這個不能怪我,因為自定義單元格格式的條件最多只能有三個,多了它可是六親不認的,這是一個弊端。所以這裡我自作主張把三個條件定為>=80,>=60,<60。
當然,最後一個不及格的條件不用再在前面打上 [<60],否則 Excel 會彈出錯誤提示框,結果就是 [>=80]優秀;[>=60]及格;不及格。
同一道題,我們有四個備用方案了。以後不用再被 If 層層嵌套繞暈了!完了 If 函數,在嵌套這件事情上你可能要被本寶寶拋棄了~