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

5 篇文章 3 订阅
4 篇文章 3 订阅

任务介绍

这一次我们通过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循环。之所以用这个语句是因为既然已经找到该同学的分数了,那就应该跳出,避免无意义的循环,浪费运算资源。
  • 程序的主体是两个For循环,外层循环是遍历Excel文档的D列,也就是遍历待查询的姓名。内层循环是遍历Excel文档的A列,也就是查询列表。最终实现的效果就是:例如将D1的“小红”与A列中每个姓名依次比较,如果遇到等于“小红”的姓名就将对应的B列的分数填写到E列。

运行结果

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

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Excel中,VBA是一种编程语言,可以用来自动化执行一系列操作。如果要通过VBA来调用VLOOKUP函数实现动态查询,我们可以按照以下步骤进行操作: 1. 打开VBA编辑器:在Excel中按下Alt+F11键,即可打开VBA编辑器窗口。 2. 在VBA编辑器中插入新的模块:在"插入"菜单中选择"模块",即可在项目资源管理器中创建一个新的模块。 3. 编写VBA代码:在新的模块中输入以下代码,用于调用VLOOKUP函数实现动态查询。 ```vba Function VLOOKUP_Dynamic(LookupValue As Range, LookupRange As Range, ColumnIndex As Integer) As Variant Dim Result As Variant Result = Application.WorksheetFunction.VLookup(LookupValue, LookupRange, ColumnIndex, False) VLOOKUP_Dynamic = Result End Function ``` 4. 保存并关闭VBA编辑器:保存VBA代码,然后关闭VBA编辑器窗口回到Excel工作表。 5. 在单元格中调用VBA函数:在Excel工作表中选择一个单元格,在函数栏中输入"=VLOOKUP_Dynamic(要查找的值, 查找范围, 返回列索引)",并按下回车键。其中,"要查找的值"是要动态查询的值,"查找范围"是要进行查询的范围,"返回列索引"是要返回的列号或列索引。 通过以上步骤,我们可以通过VBA调用VLOOKUP函数实现动态查询。每当单元格中的值发生变化时,VLOOKUP_Dynamic函数将会重新计算并返回相应的查询结果。这种方法可以节省时间和手动操作的复杂性,提高查询的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值