Excel VBA之函数篇-3.14数据的高级查找,快速通过区间划分等级

公众号:Excel和VBA

前景提要

在前面几次的学习中,我们学习了一些关于like()函数的简易的使用方法,今天我们来继续学习下相关方面的知识,今天我们更换一个场景,这个场景也是受到了小编在写月总结的时候的一个启发,主要是通过区间来区分不同的等级的,比方说我们销售人员每个月都会有一个销售任务指标,然后还会有一个实际销售额,通过完成率来评判这个销售员的工作状态和效率,这是很多商城,公司比较常用的一种KPI考核指标的方法,但是通过计算出来的数据各不相同,要快速的区分出各个档次的销售员并不是容易的事情,那么VBA是否可以实现快速帮我们区分各个不同等级的呢?

函数说明

想要实现这样的效果,也不难,我们还是继续通过like()函数来实现,学到这里你一定会觉得like()函数的功能有多强大了吧,之前我们学习了通过结构,长度,起始字符等方式的运用,今天我们来学习下like()在区间判断中的使用,判断区间的方式也很简单,“[1-10]”代表的就是1到10之前的数据,“[A-G]”代表的就是A到G之间的字母,当然还有一种情况就是逆判断,不在当前区间,“[!A-G]”你也看出来了,就是再正向判断前面加一个感叹号,就代表了不等于区间了。好了,知识点和思路有了,我们举个例子吧。

上代码

这里我们按照我们之前模拟假设的场景,还是个商城的销售人员的KPI考核指标,我们现在已经有了每个人的销售量,销售指标的完成度也是非常的简单了,用销售量/销售额度就达到了这个百分比了。

image.png

前面这一部分我们已经做了,因为这份数据是虚构的,数据也是随机输入的,可以看出来数据的差距非常的大,在实际的销售数据中,很难出现这样大的差距的,这只是我们模拟的一种场景,实际中更多每个销售员的数据还是比较的接近的,单纯肉眼识别还是非常的困难的,而且为了演示的方便,我这里仅仅是列举了20几个数据而已,好了,我们上代码

Sub TEST()

Dim i&

EndCol = Cells(Rows.Count, "k").End(xlUp).Row

For i = 2 To EndCol

    If Fix(Cells(i, "k")) >= 1 Then

        Cells(i, "k").Offset(0, 1) = "超额完成"

        ElseIf Fix(Cells(i, "k") * 10) Like "[!0-7]" Then

            Cells(i, "k").Offset(0, 1) = "基本完成"

            ElseIf Fix(Cells(i, "k") * 10) Like "[1-8]" Then

                Cells(i, "k").Offset(0, 1) = "未完成指标"

    End If

Next i

End Sub

这里我们要求如果完成度得到80%以上就算是基本完成任务,如果低于80%就算是未完成任务,而超过100%就算是完成了销售任务了,我们来看看代码效果。

image.png

完美,正是我们想要的效果。

代码解析

EndCol = Cells(Rows.Count, "k").End(xlUp).Row

这句代码已经非常的熟悉了,获取K列最后一个非空单元格的,我们在实例中已经使用过很多次了,想必大家都非常的了解了

本次的案例中,运用到了1个我们还没有讲解过的知识点,就是函数的取整,fix(number)就是函数的取整,有一点经验的童鞋一定会说还有另外一个取整函数,int()

没错,但是这两者是有区别的,fit()取整我们可以理解为是"暴力取整",不管后面是多少,只取整数部分,不会四舍五入的,但是int()就存在四舍五入的情况,而本案例中,我们并不需要四舍五入,因为再like()中,小数区间的并不是很准确,所以更多的情况下,我们都是利用整数区间来判断的,所以本案例中,我们是将数据扩大10倍,然后取整的,这样我们就等于到了小数点的第二位数了,再通过判断这个数据的大小区间,就可以得到我们想要的结果了,如果再[1-7]区间就是没有完成,不在这个区间的就是基本完成了。

If Fix(Cells(i, "k")) >= 1 Then

        Cells(i, "k").Offset(0, 1) = "超额完成"

        ElseIf Fix(Cells(i, "k") * 10) Like "[!0-7]" Then

            Cells(i, "k").Offset(0, 1) = "基本完成"

            ElseIf Fix(Cells(i, "k") * 10) Like "[1-8]" Then

                Cells(i, "k").Offset(0, 1) = "未完成指标"

    End If

这里我们先判断区间是否大于等于1,如果属于条件成立的话,那么这个销售员的完成度一定在100%甚至以上,这是一个优秀员工,属于超额完成销售任务的,我们标记为超额完成,如果条件不成立,我们继续往下走,这里将结果扩大10倍之后再取整,如果结果再8-10之间,那就是80%以上的完成度了,我们划为基本完成,如果达不到这个要求,那就是未完成了,这里我们用了另外一个写法,[1-8]代表的就是0%80%之间的,而[!0-7]代表的就是80%100%之间的数据了,两种写法都展示出来,方便大家理解,可能中间扩大10倍的过程不好理解,我们这里来调试下看看

image.png

原始数据是0.998.。。。。扩大10倍就是*10,得到的结果就是9.98.。。,再取整的话,就得到了整数部分9, 这里没有四舍五入!

完整代码及注释

Sub TEST()

Dim i&

EndCol = Cells(Rows.Count, "k").End(xlUp).Row '找到最后一个非空单元格

For i = 2 To EndCol

    If Fix(Cells(i, "k")) >= 1 Then '判断是否大于100%

        Cells(i, "k").Offset(0, 1) = "超额完成"

        ElseIf Fix(Cells(i, "k") * 10) Like "[!0-7]" Then '判断80%~100%区间的数据

            'Debug.Print "完成度是" & Cells(i, "k")

            'Debug.Print "扩大10倍的完成度是" & Cells(i, "k") * 10

            'Debug.Print "取整之后的结果是" & Fix(Cells(i, "k") * 10)

            Cells(i, "k").Offset(0, 1) = "基本完成"

            ElseIf Fix(Cells(i, "k") * 10) Like "[1-8]" Then '判断0%~80%区间的数据

                Cells(i, "k").Offset(0, 1) = "未完成指标"

    End If

Next i

End Sub
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容