我使用下面的代码来检查sheet 17中非空区域内每个单元格的值与sheet 1中另一个数据区域的值。如果在sheet 1中找不到该值,则该单元格的值及其左侧和右侧的各个单元格将被传输到sheet 2中。这样做效果很好,但您可以看到,该代码仅设置为填充sheet 2中的第2行。我需要代码在sheet 2中为每次成功的循环迭代向下移动一行。我有LRow行代码,但我认为我没有正确使用它。任何帮助/指导都是很好的
Sub Induction_Report2()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Sheet2.Rows("2:" & Rows.Count).ClearContents
Dim s As Range
Dim cell As Range
Dim i As Integer
Dim lRow As Long
lRow = Sheet2.Range("A" & Rows.Count).End(xlUp).Row
For i = 79 To 6256
If Cells(i, 15) <> "" Then
Set s = Sheet1.Range("A1:A9000").Find(What:=Sheet17.Cells(i, 15).Value, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False) 'SEARCH FOR NAME AND SUPPLIER WITHIN INDUCTION LIST
If s Is Nothing Then 'name is not found
Sheet2.Range("C2").Value = Sheet17.Cells(i, 11).Value 'Transfer name
Sheet2.Range("B2").Value = Sheet17.Cells(i, 14).Value 'Transfer Role
Sheet2.Range("D2").Value = Sheet17.Cells(i, 12).Value 'Transfer Supplier
Sheet2.Range("A2").Value = Sheet17.Cells(i, 16).Value 'Transfer Job Number
End If
End If
lRow = lRow + 1
Next i
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
2条答案
按热度按时间s71maibg1#
VBA查找(
Application.Match
)wfsdck302#
你不应该每次迭代都给lRow加1,因为你只想在实际添加数据时(当它通过第二个If语句时)增加它,并且lRow应该在你的Range中使用,如下所示:
希望这有帮助:)
ps:我刚刚注意到你清除了第2行和前面的内容,所以你可以只使用
lRow = 2
(没有我在你的for循环前面添加的lRow = lRow + 1
)