如何在excel中用宏(VBA)实现VLOOKUP的功能

数据量太大了,用VLOOKUP太慢,求高手解答

sub test()
dim dic as object,mAry,mRow as long,
set dic=createobject("scripting.dictionary")
with workSheets("数据")
      mrow=.cells(.rows.count,1).end(3).row
      mAry=.[a2].resize(mrow-1,2)
end with
for i=1 to ubound(mary,1)
      dic("" & mary(i,1))=mary(i,2)
next i
with worksheets("求解表")
      mrow=.cells(.rows.count,1).end(3).row
      mAry=.[a2].resize(mrow-1,1)
      for i=1 to ubound(mary,1)
            if dic.exists("" & mary(i,1)) then
                  mary(i,1)=dic.exists("" & mary(i,1))
            else
                  mary(i,1)="NO find!"
           end if
      next i
      .[b2].resize(ubound(mary,1),1)=mary
end with
end sub

追问

谢谢啊,显示dim dic as object,mAry,mRow as long,这个是语法错误,如果删除这个一行就得出的结果是NO Find 和 Ture。

追答

呃,手写的代码。。

修改如下

sub test()
dim dic as object,mAry,mRow as long
set dic=createobject("scripting.dictionary")
with workSheets("数据")
      mrow=.cells(.rows.count,1).end(3).row
      mAry=.[a2].resize(mrow-1,2)
end with
for i=1 to ubound(mary,1)
      dic("" & mary(i,1))=mary(i,2)
next i
with worksheets("求解表")
      mrow=.cells(.rows.count,1).end(3).row
      mAry=.[a2].resize(mrow-1,1)
      for i=1 to ubound(mary,1)
            if dic.exists("" & mary(i,1)) then
                  mary(i,1)=dic("" & mary(i,1))
            else
                  mary(i,1)="NO find!"
           end if
      next i
      .[b2].resize(ubound(mary,1),1)=mary
end with
end sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-07
Function myvlookup(val, rg As Range, n As Integer, f As Boolean)
    arr = rg
    If f Then
        For i = UBound(arr) To 1 Step -1
            If val >= arr(i, 1) Then
                myvlookup = arr(i, n)
                End Function
            End If
        Next
    Else
        For i = 1 To UBound(arr)
            If val = arr(i, 1) Then
                myvlookup = arr(i, n)
                End Function
            End If
        Next
    End If
    myvlookup = "Nothing is find!"
End Function

第2个回答  2015-10-04
既然使用了VBA就没必要再使用内置函数,VBA可以把VLookUp重新定义。
第3个回答  2015-07-02
VBA不见得比内置函数快哦
第4个回答  2015-07-02
上传附件 我看看
留个联系呗追问

上传不了,要不我加你q

追答

你留一个,我加尼,发你个副本看看

相似回答