VBA查找单元格内容查找不到 & 宏运行过慢?

需求:我想点击Sheet2中“查找”按钮,查找确认Sheet2中A列填写的发票号码是否存在于Sheet3中,如果存在,就在Sheet2的B列显示其在Sheet3中的行数并且将Sheet3中找到的发票号码标记成红色字体。问题:1.图中的发票号码明明Sheet3里面有,但是却查找不到,请问是什么问题?2.当要一次在Sheet2中查找很多发票号码时,点击“查找”后运行很慢很费时间,怎么样可以让运行快点出结果呢?请大神指点修改,附件无法上传,我上传了图片。谢谢!

这个程序有不足之处是Sheet3中发票号有65536行吗(这是很慢原因,如果你表2有100个你程序要找600万次是什么概念),

无时要用下面这样来处理

还有

放在下面前面

发票号码明明Sheet3里面有,但是却查找不到是因为你程序,表2中查找时要加下句,找到不要找了

在下面加上一句

Exit For

上面两个地方改了可以了。

参考

Excel怎样快速多表查找数据列表

追问

您好,只剩下查找不到这个问题了。我在您说的那句后面加了 Exit For 但是好像还是不行。我发现一个问题,就是只要执行宏查找不到的,表格里用函数VLOOKUP也查找不到,只要Ctrl+F可以查找到,所以是不是单元格格式不同导致的呀,因为我将找不到的那个发票号码copy至要查的表里,再执行宏就可以查找到;又或者我给每个号码前面都加相同汉字再去查找,只要有就能查到。请求帮忙!

追答

数据里有空格吗

追问

没有空格的,我觉得问题就是出现在这里应该。当我给每个单元格全都加“发票”两字,然后要给查找的发票号码也全前面加上“发票”两字,查找就没问题。所以这和单元格设置有关系吗?我试着改变成常规或者文本,但是都不能验证我的猜想,不知道是哪里的问题?方便给个邮箱吗,我发你帮看看可以吗?

追答

附163邮箱mijizili

追问

已经发您了,帮忙看看,谢谢!

追答

Option Explicit
Sub 查找发票位置() '现在运行很快出结果,只是我输入的那3个发票号码还是显示查询不到,请帮忙在我的基础上完善下,感谢!
Dim m, tm, rng
m = Sheet3.Range("A65536").End(xlUp).Row
tm = Now()
Application.ScreenUpdating = False
Sheet3.Select
'For Each rng In Sheet3.Range("A3:A65536")
Dim n As Integer
n = Sheet2.Range("A65536").End(xlUp).Row
If n < 2 Then Exit Sub
For n = 2 To n Step 1
For Each rng In Sheet3.Range("A3:A" & m)
If rng.Text = Sheet2.Range("A" & n).Text Then
Sheet2.Range("B" & n) = rng.Row
rng.Font.ColorIndex = 3
Exit For
Else
Sheet2.Range("B" & n) = "Sheet3中未找到此发票号码"
End If
Next
Next
Sheet2.Select
Sheet2.Range("C1").Select
Application.ScreenUpdating = True
MsgBox "查找完毕,本次查找所消耗的时间为:" & Format(Now() - tm, "hh:mm:ss") & " 。"
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-29
可以考虑数组字典的。
可以建立新的沟通渠道上传文件。私信我或评论后我私信你。
相似回答