【数据源】
先给出今天教学的源数据。建议大家在看后面解决方式之前,先思考一下你会用什么方法处理,会用几种方法处理,然后再来印证。
数据本身没有什么好说的,要求:根据b列的数值,在e列的范围条件中找到对应范围在h列的区间系数,并提取到c列计提系数中。
本身来说,此类问题更多的是计算计提金额,我们为了更加突出提取系数的函数部分,就省略了此环节,大家记得下面的每个函数再乘以b列数值就可以得到计提金额。
【附加知识】
在给大家解决问题的方式之前,先说一点附加知识。看一下上图中f列的表达方式,在日常工作中,我们看到此类问题的条件描述大部分都会写成e列的格式。但区间的表示方式,规范的写法应该如f列的格式,由两个值组成,以逗号隔开,左边的值为最小值,右边的值为最大值,“[ ]”为包含等于,“( )”为不包含等于。无穷符号是在插入符号中输入,如下。
【解题方案】
【方法一:if函数】
图例:
c2单元格函数:
=if(b2>=500,0.1,if(b2>=300,5%,if(b2>=150,3%,if(b2>=50,1%,0))))
函数解析:
对于区间取值的问题,if函数也许是我们最先想到的方式,也是很多同学用的最多的方式,同时它也确实是最好理解函数原理的一个。但是小函数却有大智慧,对于if函数,我们要知道多级if嵌套的运算顺序是从左向右进行的,第一级条件b2>=500为真(true),则返回0.1,为假(false)则进行第二级if判断b2>=300,为真(true)则返回5%,为假(false)则进行第三级判断条件,以此类推。当某一级条件为真(true)返回某个值后,函数也就不再向后运行。
所以很多同学写错了if嵌套,就是写错了这个逻辑关系,导致返回值不对。记住这个逻辑关系一定是要么全用>号,从大到小写;要么全用
上图就是全用号写的if函数,大家注意到没有,条件中的=号都是包含在次一级跳点区间中的,所以我们在函数中只使用了号,没有使用=号。
c2单元格函数:
=if(b2if(b2if(b2if(b210%))))
【方法二:vlookup函数】
图例:
c2单元格函数:
=vlookup(b2,$g$2:$h$6,2,1)
函数解析:
vlookup函数用于垂直查询,一共有四个参数,前三个我们就不多介绍了,其中第四个参数是模糊查询(true)/精确查询(false)。
vlookup函数是一个使用率很高的函数,再绝大多数的工作环境中我们都可以使用精确查询,但是在区间取值的问题上,必须使用模糊查询。
使用vlookup函数区间取值时,我们的数据源必须像g、h列那样,将数据按照“升序”的方式排列出来。当然我们也可以使用数列,同样数列的输入也须按照升序来写{0,0;50,1%;150,3%;300,5%;500,10%}。数列的问题不是今天的重点,我们以后写数组函数内容的时候再来说它。
【方法三:lookup函数】
图例:
c2单元格函数:
=lookup(b2,$g$2:$g$6,$h$2:$h$6)
函数解析:
这里我们使用了lookup函数的“向量”用法。即在第一个区域(第2参数)的查询值中,返回第二个区域(第3参数)中对应的值。这个是不是比vlookup函数更好理解呢?同理,和vlookup函数一样,它的数据源也需要升序排列。
当然我们也可以使用lookup函数的数组用法,如下:
lookup函数的数组用法,是在区域的首端找到值,再返回区域末端对应的值。
lookup函数相对于vlookup函数(垂直查询)和hlookup函数(水平查询)来说,倒是显得“全能”了一些,它可以根据行或者列来做今天的区间取值问题,如下图:
相关学习推荐:excel教程
以上就是实用excel技巧分享:聊聊区间查询的三大套路!的详细内容。
