Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 11036|回复: 16

[已解决]VLOOKUP查找,行数多了为什么会出错

[复制链接]
发表于 2014-2-8 21:35 | 显示全部楼层 |阅读模式
如附件所示,B列中的数值在A列中查找,我用了3中方法,分别是公式填充;数组加函数;循环。这三种方法在行数少的时候都能运行,但是我有个10万行的数据,加进去,第一种和第三种方法都太慢了,大概要10分钟运行,我想第二种速度会不会快点。但是第二种方法在10万行时运行会出错,各位高手、大神帮我找找原因吧。感激不尽!
最佳答案
2014-2-8 22:54
试试:
Sub test()
t = Timer
Set d = CreateObject("scripting.dictionary")
ar = [a1:a100000]
For i = 1 To UBound(ar)
  d(ar(i, 1)) = ar(i, 1)
Next
ar = [b1:b100000]
For i = 1 To UBound(ar)
    ar(i, 1) = d(ar(i, 1))
Next
[c1:c100000] = ar
MsgBox Timer - t
End Sub
把你的数据扩到十万,也要不到喝口茶的时间

工作簿1.zip

448.3 KB, 下载次数: 40

 楼主| 发表于 2014-2-8 21:46 | 显示全部楼层
刚试了下,A列6万行,B列10万行,方法二能运行,若果A列加到10万行就出错,提示:运行错误‘13类型不匹配
回复

使用道具 举报

 楼主| 发表于 2014-2-8 21:51 | 显示全部楼层
本帖最后由 daiyong84 于 2014-2-8 21:55 编辑

11111
回复

使用道具 举报

发表于 2014-2-8 21:52 | 显示全部楼层
请测试:
  1. Sub test()
  2.     t = Timer
  3.     Dim ar, re
  4.     Dim i As Long, j As Long
  5.     ar = Range("A1:B" & Cells(Rows.Count, 1).End(3).Row)
  6.     ReDim re(1 To UBound(ar), 1 To 1) As String
  7.     For i = 1 To UBound(ar)
  8.         For j = 1 To UBound(ar)
  9.             If ar(i, 2) = ar(j, 1) Then re(i, 1) = ar(i, 2): Exit For
  10.         Next
  11.     Next
  12.     [c1:c65536].ClearContents
  13.     [c1].Resize(UBound(re)) = re
  14.     MsgBox Timer - t
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2014-2-8 21:53 | 显示全部楼层
本来函数就不是大数据运行的,数据大了运行肯定要慢,
vlookup精确查找用的是遍历法,大数据肯定要慢的,可以试试lookup,二分法会减少运行时间
回复

使用道具 举报

发表于 2014-2-8 21:53 | 显示全部楼层
另外,想说的就是,既然用了VBA,为什么还要去调整工作表函数呢?
一般来说,不用函数比用函数快,用VBA自带的函数比用工作表函数数快。
回复

使用道具 举报

 楼主| 发表于 2014-2-8 22:13 | 显示全部楼层
CheryBTL 发表于 2014-2-8 21:53
另外,想说的就是,既然用了VBA,为什么还要去调整工作表函数呢?
一般来说,不用函数比用函数快,用VBA自 ...

多谢,受教了,我先测试下你的代码看看。
回复

使用道具 举报

发表于 2014-2-8 22:16 | 显示全部楼层
CheryBTL 发表于 2014-2-8 21:52
请测试:

很好
回复

使用道具 举报

 楼主| 发表于 2014-2-8 22:31 | 显示全部楼层
快20分钟了还没运行完

点评

慢也不会这么慢吧?楼主方便的话,把数据发一份上来测试下?  发表于 2014-2-8 22:47
回复

使用道具 举报

发表于 2014-2-8 22:39 | 显示全部楼层
确实,用了VBA就最好不再用lookup之类的工作表函数了
你这么大量的数据情况下,双层循环也不太好。试用字典看看呢,就该不会太慢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-21 15:15 , Processed in 0.310068 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表