文科生也能学会的Excel VBA 宏编程入门(四)——VBA实现vLookup

任务介绍

这一次我们通过VBA编程来实现类似vLookup的功能。当然,你可能要问,既然vLookup能搞定为什么还要用VBA再实现一遍。如果仅仅是使用vLookup这一单一功能当然没必要非得来个VBA编程,但如果你要实现的功能比较复杂就不再适合串联使用一大堆Excel公式了,这个时候用VBA编程会更容易,也不容易出错。

程序基本思路

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200330173716128.pn
我们要处理的Excel文件如上图所示。A列和B列分别是姓名和分数,我们要实现的功能是根据D列的姓名,查找出对应的分数并填写在E列。

VBA编程

Sub 查找()

Dim l As Long '记录A列一共有多少行,也即是待查找列表有多少行
Dim l2 As Long '记录D列一共有多少行,也即是待查询的内容有多少行

Dim v1 As String '记录当前的查询内容

l = ActiveSheet.Range("A65536").End(xlUp).row
l2 = ActiveSheet.Range("D65536").End(xlUp).row

For i = 1 To l2
 v1 = ActiveSheet.Range("D" & i)
 
 For j = 1 To l
    If v1 = ActiveSheet.Range("A" & j) Then
        ActiveSheet.Range("E" & i) = ActiveSheet.Range("B" & j)
        Exit For '既然已经找到了,就提前跳出for循环
    End If
 Next
    
Next

End Sub
  • 下面对一些新内容进行特别说明。这个程序中唯一的新内容就是Exit For这个语句,该语句是用来提前跳出For循环。之所以用这个语句是因为既然已经找到该同学的分数了,那就应该跳出,避免无意义的循环,浪费运算资源。

运行结果

在这里插入图片描述
程序运行结果如上图所示,可以看出,该程序实现了类似vLookup的功能,之所以说类似是因为vLookup遇到A列有重名的时候会返回最后一个匹配的值,而该程序会返回第一个匹配的值,具体为什么会这样可以自己思考一下。

发布了22 篇原创文章 · 获赞 21 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/liucc09/article/details/105204242
vba