【发布时间】:2019-01-03 12:00:58
【问题描述】:
我遇到了与循环有关的情况。
问题是我想检查一个范围中的 EmployeeID 是否在另一个范围副本中不存在并将其粘贴到第二个范围中。
请看我的代码。实际上代码运行成功,但是出了点问题。另外我想问一下,我怎样才能让这段代码更有效地高速运行循环。其实我试过用数组,但不知道够不够用?
提前致谢!
Option Explicit
Sub UniqueWorkerCodeLoop()
Dim i As Integer
Dim j As Integer
Dim DB As Worksheet: Set DB = Worksheets("DB")
Dim Report As Worksheet: Set Report = Worksheets("Report")
Dim Lrow1 As Long: Lrow1 = DB.Range("A" & Rows.Count).End(xlUp).Row
Dim Lrow2 As Long: Lrow2 = Report.Range("A" & Rows.Count).End(xlUp).Row
Dim DBTbl As ListObject: Set DBTbl = DB.ListObjects("Table1")
Dim ReportTbl3 As ListObject: Set ReportTbl3 = Report.ListObjects("Table3")
Dim DBArray As Variant: DBArray = DB.ListObjects("Table1").DataBodyRange.Value
Dim ReportArray As Variant: ReportArray = Report.ListObjects("Table3").DataBodyRange.Value
For i = 1 To UBound(DBArray, 1)
For j = 1 To UBound(ReportArray, 1)
If DBArray(i, 1) <> ReportArray(j, 1) Then
DB.Range("A" & i + 3).Copy
Report.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial (xlPasteValues)
End If
Next j
Next i
End Sub
【问题讨论】:
-
如果您尝试仅比较来自
DBArray的 1 列与 1 列ReportArray您可以使用 1 个循环和Application.Match而不是 2 个For循环