Excel VBA 8.48 获取数据最后一次出现的记录 简单的VBA就可以实现

获取数据最后一次出现的记录 简单的VBA就可以实现


点击上方“Excel和VBA”,选择“置顶公众号”

致力于原创分享Excel的相关知识,源码,源文件打包提供

一起学习,一起进步~~


获取数据最后一次出现的需求,其实在我们日常工作中应该是比较常见的

比方说有时候我们为了记录某个员工历次的销售业绩,我们会将每次的销售数据都保存下来,这样我们就可以分析员工的销售水平的变动,方便监督员工不断提升自己的销售水平,但是这样又有一个弊端,那就是在我们最后计算业绩的时候,需要从一大堆数据中找出这个员工最后一次的数据,就非常的耗时了,那么针对这样的情况,我们要如何来处理呢?

场景说明

比方说我们稍微更改下上一节的数据源,这里其实我们班上只有那么几位同学,但是我们这份表中,记录了他们每一次周考的成绩,现在马上就要临近大考了,我们希望知道学生最后一次考试的成绩是多少,从一大堆数据中去找,确实是比较困难的。

相信这类问题,大家在之前百度的时候,一定会看到网上有很多种不同的方法,我们既然在学习VBA,就直接用VBA来实现,更好理解, 也更好用。

代码区

Sub test()Dim rng As Range, trng As Range, frng$, a As Ranges = Application.InputBox("查找内容的确定", "请输入查找内容", , , , , , 3)With ActiveSheet.UsedRange    Set rng = .Find(s, searchdirection:=xlPrevious)    rng.SelectEnd WithEnd Sub

清晰简短的代码

相较于网上所提供的的各种方法,又是函数,又是辅助列的,VBA代码明显简单了很多

直接来看看效果

非常的简单快捷

代码分析

看到代码,大家都应该知道我用的是什么方法了吧

还是我们之前学习过的range.find方法

不过今天的参数有点不一样,我们来重点看看

Set rng = .Find(s, searchdirection:=xlPrevious)'今天的代码Set rng = .Find(s)'之前的代码

我们这里将之前的代码和今天的代码放在一起,大家可以对照着来看

我们会发现相较于之前的代码,今天的代码仅仅是多了一部分,那一部分呢?

searchdirection:=xlPrevious

那这一部分代码有什么用处呢?

他其实就是用来说明find查找的方向的。

SearchDirection 可选参数,只要用来指明find查找的方向

他有两种不同的表达方式,xlNext(向后,默认值),xlprevious(向前)

比方说我们今天的场景

searchdirection:=xlprevious,意思是从后往前找,找到结果就算是程序结果了。

这也是为什么相同数据,昨天用range,find用了12s,但是今天是秒出结果

因为我们指明了方向,是从数据源的最后面开始查找,找到结果就暂停了,那么这样一来数据量就很小了

小小的find的方法,居然还有这么好的隐藏技能,大家今天get到了吗?

不知道还有没有什么其他隐藏的小技能呢?

欢迎大家踊跃留言~~~

==========================

本节课的案例源码已经上传,需要的小伙伴后台私信“8-48-T7”,希望大家多支持~~,多多关注 ~ ~

好了,明晚21:00,准时再见!


因为公众号没有留言功能(开的比较晚),所以建立一个线下微信群,主要为大家提供一个交流的平台,同时大家也可以提一些对公众号的意见和看法,大家一起学习,一起进步。

(0)

相关推荐