人气 4332

用VBA代替VLOOKUP函数引用数据 [复制链接]

拥抱大树 2017-3-16 16:34:00
VLOOKUP函数是一个纵向查找函数,它是按列查找,最终返回该列所需查询列序所对应的值。用VLOOKUP函数来查找很方便,不过它的缺点很明显:1、速度慢,特别是在数据量大的情况下。2、每个单元格你都要维护好公式,如果对应不到会出现#N/A,不是很美观,当然你可以用别的公式来消除,不过这又增加了公式的复杂度。用VBA代替VLOOKUP函数,不仅速度快,而且把它单独做成模版,下次有类似对应操作的需求时,可以直接复制粘贴进去来使用,不用再维护调整公式数量了,通用性强。
如下图,我们需将图二中的数据引用到图一中.
1489653749243430.jpg (11.51 KB, 下载次数: 0, 售价: 2 金钱)
1489653749121207.jpg (22.42 KB, 下载次数: 0, 售价: 4 金钱)
方法一、最笨的方法就是按照姓名筛选手工填或者CTRL+F批量替代,数据量大了根本不好使。方法二、在表2学号列填写VLOOKUP函数,比如G2=VLOOKUP(F2,A1:B4,2,FALSE), G3=VLOOKUP(F3,A1:B4,2,FALSE),以此类推。方法三、用VBA代码,按ALT+F11进入工程界面,输入右侧代码,运行就可以了。代码如下图:
1489653823334055.jpg (28.17 KB, 下载次数: 0, 售价: 3 金钱)
Sub 引用() Dim i%, r% Dim arr1, arr2 arr1 = Sheets("sheet1").[a1].CurrentRegion arr2 = Sheets("sheet2").[a1].CurrentRegion r = 1 For r = 1 To UBound(arr2)  For i = 1 To UBound(arr1)   If arr2(r, 1) = arr1(i, 1) Then    arr2(r, 2) = arr1(i, 3)  Exit For  End If  Next Next Sheets("sheet2").[a1].Resize(UBound(arr2), 2) = arr2End Sub
您需要登录后才可以回帖 登录 | 立即注册

QQ|手机版|精益人 ( 沪ICP备19004111号-1 )|网站地图

GMT+8, 2024-12-22 19:55 , Processed in 0.459066 second(s), 24 queries .

Powered by Lean.ren X3.5 Licensed  © 2001-2030 LEAN.REN