在日常工作中經常會使用IF函數做判斷,有時判斷的條件比較多,一個IF“不夠用”就需要使用多個IF嵌套才能完成多條件判斷。比如下面這個例子。這是一份會員積分明細,我需要依據累計積分來劃分會員等級。
劃分會員等級的依據如下圖所示。
這種情況需要使用三個IF嵌套完成,在C2單元格輸入=IF(B2>=15000,"貴賓",IF(B2>=10000,"高級",IF(B2>=5000,"中級","普通")))
這3個IF邏輯關系可以看下圖
條件成立(true),條件不成立(FALSE)
解析:第一個IF判斷積分是否>=15000,如果條件成立,返回“貴賓”,如果不成立就“丢”給第二個IF判斷。
第二個IF判斷積分是否>=10000,如果條件成立,返回“高級”,如果不成立就“丢”給第三個IF判斷。
第三個IF判斷積分是否>=5000,如果條件成立,返回“中級”,如果條件不成立,這裡就無需在判斷了,因為以上3個都不成立,那肯定是<5000,直接返回“普通”
接着公式向下填充,判斷所有會員積分。
如果經常使用函數的熟手,不會有什麼問題,但是這種嵌套函數對于新人朋友來說就比較“不友好”了。
新人易錯和疑問點:
1、邏輯沒理順,哪個條件要先寫,判斷4個條件為什麼隻需要3個IF?
2、各種标點符号容易搞錯,哪怕錯一個公式都會報錯
3、如果發生條件變更,新人難以維護公式(重新編輯)
那有沒有更簡單的方法?
有,必須有,下面就分享一個一勞永逸的方法,VBA自定義函數。
第一步、首先看下你的EXCEL這裡(下圖紅框處)有沒有開發工具
如果沒有,就點擊上圖紅框最左邊的文件,然後在屏幕左側的菜單裡選擇選項,如下圖
這個時候會彈出Excel選項,點擊自定義功能區——點擊開發工具——點擊确認
現在開發工具就出現了
第二步、粘貼代碼
點擊Visual Basic
此時會彈出VBA編輯界面,接着點擊插入——點擊模塊
此時模塊下面就會多了一個模塊1(紅框處),然後把代碼複制到模塊1的編輯界面裡,如下圖
複制下面的代碼(黑色加粗部分)↓↓↓↓↓↓↓↓↓↓↓
Function 會員等級(判斷的單元格 As Range, 貴賓 As Integer, 高級 As Integer, 中級 As Integer)
If 判斷的單元格 >= 貴賓 Then
會員等級 = "貴賓"
ElseIf 判斷的單元格 >= 高級 Then
會員等級 = "高級"
ElseIf 判斷的單元格 >= 中級 Then
會員等級 = "中級"
Else
會員等級 = "普通"
End If
End Function
代碼解析(這裡不是代碼,不要複制):
1、代碼必須放在模塊中才能使用,所以一定要按照上面的操作步驟來,把代碼粘貼到模塊中。
2、Function 後面的會員等級這幾個字就是函數的名稱,是自定義的,可以修改,隻要不是Excel保留字就可以,比如不能叫代碼中的ELSE,因為這個詞在VBA中有自己特定的意思,屬于保留字。
3、代碼中的引号裡的中文也可以根據自己的要求修改。
3、代碼其實就是把我們寫在單元格中的IF挪到了這裡,隻要寫一次,未來都按這個套路走,起到一勞永逸的效果。
第三步、保存加載宏
點擊文件
選擇另存為,此時先随意選擇一個路徑,如本例,我選擇了桌面。
然後選擇保存類型,選擇Excel加載宏
此時路徑會自動跳轉(紅框),就保存在這裡,點擊保存
然後再次來到開發工具——點擊Excel加載項
剛剛保存的加載宏文件名就已經在這裡了,點擊它,然後點擊确認。
此時在這個電腦裡,新增的所有Excel工作簿,無需上面的操作,即可使用這個自定義函數。
4、使用自定義函數
如下圖,在D2單元格輸入=會員 就會彈出函數全名的提示
可以點擊fx按鈕,在輸入框裡填入相關參數,這個自定義函數有4個參數
第一個參數,就是要判斷的單元格,輸入B2
第二、三、四參數分别填入貴賓、高級、中級的條件,15000、10000,、5000
然後點擊确認
ps:如果條件發生更改,比如貴賓條件提高到20000,直接修改第二個參數即可。
也可以直接在編輯欄裡輸入=會員等級(B2,15000,10000,5000)
然後向下填充公式,返回的結果跟IF多重嵌套返回的結果一緻,沒有問題。
自定義函數跟Excel内置的函數是一樣的,可以用于嵌套使用。
好了,關于自定義函數劃分會員等級就分享到這裡。
如果這篇文章能幫助到你,請幫忙點贊,收藏,轉發。
關注我,獲取更多Excel實用技巧。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!