最近在學VBA,基本算是學一章用一章,順便再把這章的東西分享出來。
我在學VBA后再看excel函數的感受,像極了在大學學習了洛必達法則之后再去看高中數學求極限的題的感受。
就拿if函數來說,if+and可以實現多層嵌套,具體公式為:
=IF(條件1,返回結果1,IF(條件2,返回結果2,IF(條件3,返回結果3,….)))
原理就是先判斷條件1是否成立,如果條件1成立則返回結果1,否則進入條件2判斷是否成立,如果成立就返回結果2,否則進入條件3判斷,… 如此類推。
舉個例子,如果要用if嵌套函數計算個稅,那寫出來的公式是這樣的:
=IF(a1-5000>80000,(a1-5000)*0.45-15160,IF(a1-5000>55000,(a1-5000)*0.35-7160,IF(a1-5000>35000,(a1-5000)*0.3-4410,IF(a1-5000>25000,(a1-5000)*0.25-2660,IF(a1-5000>12000,(a1-5000)*0.2-1410,IF(a1-5000>3000,(a1-5000)*0.1-210,IF(a1-5000>0,(a1-5000)*0.03,0)))))))
每次寫這種嵌套函數我都會漏打括號,加括號把自己成功加暈,撓頭撓到頭禿。
這段代碼里面的 Range(“a” & i)和 Range(“b” & i)指的是單元格,這里我假設工資在A列,要計算的個稅在B列。
整個邏輯非常簡單,當只有兩種情況時,代碼的基本框架為:
IF(第一種情況)Then
(執行第一個要求)
Else
(執行第二個要求)
End IF
當存在多種情況時候,代碼的基本框架為:
IF(第一種情況)Then
(執行第一個要求)
ElseIF (第二種情況) then
(執行第二個要求)
……..
ElseIF (第n種情況) then
(執行第n個要求)
Else
(以上情況都不符合時執行的要求)
Endif
是不是很簡潔!
而且沒有情況數量的限制,不像if多層嵌套函數,最多只能嵌套7次!