最近也有很多小伙伴咨询过很多问题,但很多问题基本都是已经解答过的,所以我就挑选了一个没有见过的特殊需求,我在想一般应该也很少有此类需求。和今天要介绍的问题很类似就是从0~59分为Failed,从60~69为D,从70~79为C,从80~89为B,从90~100为A。一般是一列显示区间,如下图所示:
解决此类问题,可以至少有6个方法。公众号前期介绍了Excel十大函数,就有详细介绍此类问题。但今天要介绍的问题是分开表示,如下图所示:
通过上图可以看出,该区间给定了起始值和终止值,如果给定一个数字,对应哪个区间,就返回对应的姓名。需要得到的效果如下:
其实看到这个问题,第一反应就是使用Index+Match进行获取姓名,首先拿上图A列的每一个值和起始值和终止值进行对比,如果能够同时达到要求,就表示该行对应的姓名就是我们需要找的。具体函数公式如下:
{=INDEX(表2!$C$2:$C$8,MATCH(1,(A2>=表2!$A$2:$A$8)*(A2<=表2!$B$2:$B$8),0))}
该公式是一个数组公式,大括号不是直接输入的,而是通过Ctrl+Shift+Enter得到的,这个就不用多说了吧。其实上面的数组公式最重要的就是公式中标红的*,只有当同时符合在起始值和终止值的才符合要求。我们来单步演示一下,详见如下动态图:
最后,解决该问题,怎么能少了VBA呢,其实代码也非常容易,我自定义了一个sutSearch函数,仿照vlookup函数的前三个参数,具体代码如下所示:
Function sutSearch(lookValue As Range, tableArray As Range, colIndex As Byte)
Dim strlookValue As String
Dim sutArray()
Dim i As Integer
strlookValue = lookValue.Value
sutArray = tableArray
For i = 1 To UBound(sutArray, 1)
If strlookValue >= sutArray(i, 1) And strlookValue <= sutArray(i, 2) Then
sutSearch = sutArray(i, colIndex)
End If
Next
End Function
由于编写此代码的时间不超过2分钟,所以并没有考虑任何容错,但至少代码可以正常工作,代码演示如下:
怎么样?是不是两种方法都相当容易呢?各位小伙伴如果有更加简单的方法,欢迎留言或加入QQ群进行交流哦。
本文地址:
http://www.njanyou.cn/news/1629.html
Tag:
区间 查找 揭秘
专业服务:
南京网站制作,
南京网站制作公司,
南京网站建设公司
联系电话:025-65016872
上一篇:
过年回家钱不够?春节8款赚钱项目,有执行力就能挣钱
下一篇:
妈妈再也不用担心我有僵尸好友了