if函数嵌套层数太多怎么办(IF多重嵌套公式太长)
在日常工作中经常会使用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实用技巧。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com