VLOOKUP函数是一个纵向查找函数,它是按列查找,最终返回该列所需查询列序所对应的值。 用VLOOKUP函数来查找很方便,不过它的缺点很明显: 1、速度慢,特别是在数据量大的情况下。 2、每个单元格你都要维护好公式,如果对应不到会出现NA,不是很美观,当然你可以用别的公式来消除,不过这又增加了公式的复杂度。 用VBA代替VLOOKUP函数,不仅速度快,而且把它单独做成模版,下次有类似对应操作的需求时,可以直接复制粘贴进去来使用,不用再维护调整公式数量了,通用性强。 举个例子:把表1学号信息填到表2学号里面 VBA代替VLOOKUP函数 方法一、最笨的方法就是按照姓名筛选手工填或者CTRLF批量替代,数据量大了根本不好使。 方法二、在表2学号列填写VLOOKUP函数,比如G2VLOOKUP(F2,A1:B4,2,FALSE),G3VLOOKUP(F3,A1:B4,2,FALSE),以此类推。 方法三、用VBA代码,按ALTF11进入工程界面,输入右侧代码,运行就可以了。 VBA代替VLOOKUP函数 下次遇到类似的需求只要把相应的数据复制粘贴到表1和表2,运行一下就可以了。 附上截图代码 Sub引用() Dimi,r Dimarr1,arr2 arr1Sheets(sheet1)。〔a1〕。CurrentR表1数据赋值给数组arr1 arr2Sheets(sheet1)。〔f1〕。CurrentR表2数据赋值给数组arr2 r1 Forr1ToUBound(arr2)可以看成表2的行数 Fori1ToUBound(arr1)可以看成表1的行数 Ifarr2(r,1)arr1(i,1)T可以看成如果表1和表2各自的第1列数据有一样的 arr2(r,2)arr1(i,2)那么把表1对应的第2列数据赋值给表2的第2列数据 ExitF结束循环遍历 EndIf Next Next Sheets(sheet1)。〔f1〕。Resize(UBound(arr2),2)arr2把更新后的数组arr2复制到表2 EndSub