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

数据量太大了,用VLOOKUP太慢,求高手解答... 数据量太大了,用VLOOKUP太慢,求高手解答 展开
 我来答
百度网友e1af404
2015-07-02 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.1万
采纳率:59%
帮助的人:4074万
展开全部
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
庆年工坊
2015-12-07 · 知道合伙人互联网行家
庆年工坊
知道合伙人互联网行家
采纳数:4233 获赞数:8928

向TA提问 私信TA
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者zUzVB1Sl31
2015-10-04 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部
既然使用了VBA就没必要再使用内置函数,VBA可以把VLookUp重新定义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
毋亘00J
2015-07-02 · TA获得超过702个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:157万
展开全部
VBA不见得比内置函数快哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzhilling
2015-07-02 · TA获得超过2701个赞
知道大有可为答主
回答量:3255
采纳率:45%
帮助的人:1123万
展开全部
上传附件 我看看
留个联系呗
追问
上传不了,要不我加你q
追答
你留一个,我加尼,发你个副本看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式