【发布时间】:2021-09-07 20:09:04
【问题描述】:
我有这样的功能来匹配两张纸之间的数据。在 Tab 中,只有几行需要从表 Dan 中获取 ID 号,其中包含大约 10 000 个 ID。
Sub MatchName()
Dim n1 As Long
Dim n2 As Long
Dim LastRowcheck1 As Long
Dim LastRowcheck2 As Long
LastRowcheck1 = Sheets("Tab").Range("C" & Rows.Count).End(xlUp).Row
LastRowcheck2 = Sheets("Dan").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Tab").Activate
For n1 = 2 To LastRowcheck1
For n2 = 2 To LastRowcheck2
Debug.Print "From: " & Sheets("Dan").Cells(n2, 1).Value & " to " & Sheets("Tab").Cells(n1, 3).Value
If Sheets("Tab").Cells(n1, 3).Value = Sheets("Dan").Cells(n2, 1).Value Then
Sheets("Tab").Cells(n1, 6).Value = Sheets("Dan").Cells(n2, 1).Value
Sheets("Tab").Cells(n1, 30).Value = Sheets("Dan").Cells(n2, 2).Value
End If
Next n2
Next n1
End Sub
【问题讨论】:
-
Excel 崩溃 - 你是什么意思?随机关闭工作簿,vba错误还是..?
-
当需要在工作表之间比较大量数据时,使用嵌套循环查找匹配值是非常低效的。要快速比较数据,最好使用Dictionary object 和/或
Application.Match()。