VLOOKUP函數(shù)是一個(gè)縱向查找函數(shù),它是按列查找,最終返回該列所需查詢列序所對(duì)應(yīng)的值。 用VLOOKUP函數(shù)來查找很方便,不過它的缺點(diǎn)很明顯: 1、速度慢,特別是在數(shù)據(jù)量大的情況下。 2、每個(gè)單元格你都要維護(hù)好公式,如果對(duì)應(yīng)不到會(huì)出現(xiàn)#N/A,不是很美觀,當(dāng)然你可以用別的公式來消除,不過這又增加了公式的復(fù)雜度。 用VBA代替VLOOKUP函數(shù),不僅速度快,而且把它單獨(dú)做成模版,下次有類似對(duì)應(yīng)操作的需求時(shí),可以直接復(fù)制粘貼進(jìn)去來使用,不用再維護(hù)調(diào)整公式數(shù)量了,通用性強(qiáng)。 舉個(gè)例子:把表1學(xué)號(hào)信息填到表2學(xué)號(hào)里面 VBA代替VLOOKUP函數(shù) 方法一、最笨的方法就是按照姓名篩選手工填或者CTRL+F批量替代,數(shù)據(jù)量大了根本不好使。 方法二、在表2學(xué)號(hào)列填寫VLOOKUP函數(shù),比如G2=VLOOKUP(F2,A1:B4,2,FALSE), G3=VLOOKUP(F3,A1:B4,2,FALSE),以此類推。 方法三、用VBA代碼,按ALT+F11進(jìn)入工程界面,輸入右側(cè)代碼,運(yùn)行就可以了。 VBA代替VLOOKUP函數(shù) 下次遇到類似的需求只要把相應(yīng)的數(shù)據(jù)復(fù)制粘貼到表1和表2,運(yùn)行一下就可以了。 附上截圖代碼 Sub 引用() Dim i%, r% Dim arr1, arr2 arr1 = Sheets('sheet1').[a1].CurrentRegion '表1數(shù)據(jù)賦值給數(shù)組arr1 arr2 = Sheets('sheet1').[f1].CurrentRegion '表2數(shù)據(jù)賦值給數(shù)組arr2 r = 1 For r = 1 To UBound(arr2) '可以看成表2的行數(shù) For i = 1 To UBound(arr1) '可以看成表1的行數(shù) If arr2(r, 1) = arr1(i, 1) Then '可以看成如果表1和表2各自的第1列數(shù)據(jù)有一樣的 arr2(r, 2) = arr1(i, 2) '那么把表1對(duì)應(yīng)的第2列數(shù)據(jù)賦值給表2的第2列數(shù)據(jù) Exit For '結(jié)束循環(huán)遍歷 End If Next Next Sheets('sheet1').[f1].Resize(UBound(arr2), 2) = arr2 '把更新后的數(shù)組arr2復(fù)制到表2 End Sub |
|