vlookup是在excel中最常使用的函数之一
但是当数据量非常大的时候
大量的vlookup会吃掉excel内存,导致文件变得很慢
下面提供一段vba的代码,让你在vba内部实行和vlookup完全一致的能力
因为使用的是在数组中比对数据的做法,计算速度会比在表内计算要提高数倍
在数据非常大量的情况下很适合使用
缺点是只能在vba内部使用,在外部不会留下函数,修改也只能在vba内部修改
以下是简单的代码外加注释说明
Function A_Vlookup()
Dim Lsr As Long, SHTname As String, VEV As String '定义三个变量,最终行,表名称,和vlookup取得值
Dim DataArray() As String '定义一个数组
SHTname = "sheet1"
Set SHT_INPUT = Worksheets(SHTname) '选中需要vlookup的表
With SHT_INPUT
Lsr = .Cells(Rows.Count, 1).End(xlUp).Row '取得第一列的最后一个数据,以此作为数组最终行数据
For j = 0 To 4 '用j循环取值所需的列
ReDim Preserve DataArray(Lsr - 1, j) '每次循环取值都制造一个新的空列,从0到4
For i = 1 To Lsr
DataArray(i - 1, j) = .Cells(i, j + 1).Value '把excel内的数据按照列单位一一取入数组
Next i
Next j
On Error Resume Next