我有这个宏在第一行正常工作,但一旦完成,我希望它在下一行再次运行,并将结果粘贴到"结果"表格并继续整个文档的过程,直到它到达最后一条记录 - (我的电子表格中有大约5300条记录)
Sub Macro2()
' Macro2 Macro
Range("A2:BW2").Select
Selection.Copy
Sheets("Lookup").Select
Range("F3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("F3:V3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Result").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
所以基本上我正在复制名为" amps_job_history"的工作表上的第一行数据,它们将这些数据粘贴到名为" lookup"的工作表中,一旦数据粘贴在那里公式进行计算,将数据与另一个工作表中的数据结合起来。然后,我想复制原始数据加上已用公式连接到数据的额外3列,并将其粘贴到名为"结果"的表格中。然后,我希望它回到第一张表" amps_job_hisotry"向下移动到下一行数据并重复该过程,并将数据粘贴到"结果"页面需要在下一行中过去,依此类推,直到它到达最后一条记录。
答案 0 :(得分:1)
我认为这个循环是你正在寻找的。 p>
Sub Macro2()
' Macro2 Macro
Dim rw As Long
With Worksheets("amps_job_history")
For rw = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
With Intersect(.Range("A:BW"), .Rows(rw))
Worksheets("Lookup").Range("F3").Resize(.Rows.Count, .Columns.Count) = .Value
End With
With Worksheets("Lookup")
With .Range("F3:V3")
Worksheets("Result").Range("A1").Offset(rw - 1, 0).Resize(.Rows.Count, .Columns.Count) = .Value
End With
End With
Next rw
End With
End Sub
来自amps_job_history和目标结果工作表中源数据的行在每个循环上向下移动一行。 Lookup工作表中的过渡F3:V3范围在整个过程中保持不变。
我使用直接值转移而不是复制,粘贴特殊值,With ... End With statement提供显式父工作表引用,而不使用Range .Select或Range .Activate方法。