我实现的一个算法的一部分是比较不同列表的两列,如果找到匹配的值,就将这些行复制到一起,我想知道最快的方法。目前,它比较了大约100-150行彼此和它需要大约3分钟,有时更多,我觉得这是相当可怕的。这就提出了一个问题,如果有比Range.Find()更快的方法,那么知道这个方法使用的搜索算法也会很有趣。
我是VBA的新手,开始使用它是出于必要,我是一个工作的学生,来自C/#和Python,所以我绝不是Maven,也许我的期望太高了。文件保存在服务器上,这样可能会增加运行时间,但我不确定有多少因素。
我的代码的相关部分看起来像这样:
For Each LineA In sheet1.Range("B1:B" & LastRowSheet1)
Set LineB = sheet2.Range("B1:B" & LastRowSheet2).Find(LineA.Value, LookIn:=xlValues)
If Not LineB Is Nothing Then
With sheet2
.Range(.Cells(LineB.Row, 3), .Cells(LineB.Row, 12)).Copy sheet3.Range(sheet3.Cells(i, 4), sheet3.Cells(i, 13))
End With
With sheet1
.Range(.Cells(LineA.Row, 2), .Cells(LineA.Row, 4)).Copy sheet3.Range(sheet3.Cells(i, 1), sheet3.Cells(i, 3))
End With
i = i + 1
End If
Next LineA
(changed variable names from my code, so if something doesn't make sense, tell me)
2条答案
按热度按时间a1o7rhls1#
尝试
复制列格式
djp7away2#
VBA查询