打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
EXCEL用VBA代替VLOOKUP函数,速度更快更通用

VLOOKUP函数是一个纵向查找函数,它是按列查找,最终返回该列所需查询列序所对应的值。

用VLOOKUP函数来查找很方便,不过它的缺点很明显:

1、速度慢,特别是在数据量大的情况下。

2、每个单元格你都要维护好公式,如果对应不到会出现#N/A,不是很美观,当然你可以用别的公式来消除,不过这又增加了公式的复杂度。

用VBA代替VLOOKUP函数,不仅速度快,而且把它单独做成模版,下次有类似对应操作的需求时,可以直接复制粘贴进去来使用,不用再维护调整公式数量了,通用性强。

举个例子:把表1学号信息填到表2学号里面

VBA代替VLOOKUP函数

方法一、最笨的方法就是按照姓名筛选手工填或者CTRL+F批量替代,数据量大了根本不好使。

方法二、在表2学号列填写VLOOKUP函数,比如G2=VLOOKUP(F2,A1:B4,2,FALSE), G3=VLOOKUP(F3,A1:B4,2,FALSE),以此类推。

方法三、用VBA代码,按ALT+F11进入工程界面,输入右侧代码,运行就可以了。

VBA代替VLOOKUP函数

下次遇到类似的需求只要把相应的数据复制粘贴到表1和表2,运行一下就可以了。

附上截图代码

Sub 引用()

Dim i%, r%

Dim arr1, arr2

arr1 = Sheets('sheet1').[a1].CurrentRegion '表1数据赋值给数组arr1

arr2 = Sheets('sheet1').[f1].CurrentRegion '表2数据赋值给数组arr2

r = 1

For r = 1 To UBound(arr2) '可以看成表2的行数

For i = 1 To UBound(arr1) '可以看成表1的行数

If arr2(r, 1) = arr1(i, 1) Then '可以看成如果表1和表2各自的第1列数据有一样的

arr2(r, 2) = arr1(i, 2) '那么把表1对应的第2列数据赋值给表2的第2列数据

Exit For '结束循环遍历

End If

Next

Next

Sheets('sheet1').[f1].Resize(UBound(arr2), 2) = arr2 '把更新后的数组arr2复制到表2

End Sub

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel 如何在VBA中使用VLOOKUP函数?
Excel VBA ADO SQL入门教程001:认识SQL In Excel
SQL入门学习:SQL In Excel讲解
VBA数组函数UBound.lbound
DLOOKUP听说过吗?VLOOKUP和它赛跑被甩了几条街
Excel去除重复值方法汇总
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服