if函数多层嵌套不好用?试试这个吧
最近在学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)))))))
每次写这种嵌套函数我都会漏打括号,加括号把自己成功加晕,挠头挠到头秃。
然后我们来看看算个税在VBA里面怎么写,
这段代码里面的 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次!