您的位置:网站首页 > 营销型网站 > 郑州网站建设 > 正文

区间查找大揭秘,原来还有此类需求

作者:知网科技 日期:2020/6/17 人气:
标签:

     最近也有很多小伙伴咨询过很多问题,但很多问题基本都是已经解答过的,所以我就挑选了一个没有见过的特殊需求,我在想一般应该也很少有此类需求。和今天要介绍的问题很类似就是从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群进行交流哦。



(())
顶一下
参与讨论
姓名: 验证码:看不清楚,换一个
最新评论

联系我们

软件开发: 15838307519(司经理)

网络营销: 13676968269(王经理)

网络建设: 13073737771(郭经理)

24小时服务电话: 0371-56683330

了解更多APP开发

+好友