无论如何都要结合以下步骤,因为我将数据从同一张纸拉到另一张纸上,而且过程非常慢。
Sheets("CDGL").Select
Sheets("CDGL").Range("H2:J" & Cells(Rows.Count, "G").End(xlUp).Row).Copy Destination:=Sheets("Rec").Range("B6")
Sheets("CDGL").Select
Sheets("CDGL").Range("L2:O" & Cells(Rows.Count, "K").End(xlUp).Row).Copy Destination:=Sheets("Rec").Range("E6")
Sheets("CDGL").Select
Sheets("CDGL").Range("AJ2:AJ" & Cells(Rows.Count, "AI").End(xlUp).Row).Copy Destination:=Sheets("Rec").Range("I6")
答案 0 :(得分:3)
您可以使用Resize()函数直接分配值,使范围大小相同:
With Sheets("CDGL")
Sheets("Rec").Range("B6").Resize(.Cells(.Rows.Count, "G").End(xlUp).Row - 1, 3).Value = .Range("H2:J" & .Cells(.Rows.Count, "G").End(xlUp).Row).Value
Sheets("Rec").Range("E6").Resize(.Cells(.Rows.Count, "K").End(xlUp).Row - 1, 4).Value = .Range("L2:O" & .Cells(.Rows.Count, "K").End(xlUp).Row).Value
Sheets("Rec").Range("I6").Resize(.Cells(.Rows.Count, "AI").End(xlUp).Row - 1, 1).Value = .Range("AJ2:AJ" & .Cells(.Rows.Count, "AI").End(xlUp).Row).Value
End With
我还使用With Block和适当的.
标识符来减少输入并删除连续选择的工作表。这也将减少时间。
答案 1 :(得分:0)
当您需要快速复制/粘贴时,请避免复制到剪贴板并再次粘贴。您可以简单地使用Range.Value方法,如下所示:
With Sheets("CDGL")
rows_c1 = .Cells(Rows.Count, "G").End(xlUp).Row
Sheets("Rec").Range("B6:D" & rows_c1).Value = Sheets("CDGL").Range("H2:J" & rows_c1).Value
rows_c2 = .Cells(Rows.Count, "K").End(xlUp).Row
Sheets("Rec").Range("E6:H" & rows_c2).Value = Sheets("CDGL").Range("L2:O" & rows_c2).Value
rows_c3 = .Cells(Rows.Count, "AI").End(xlUp).Row
Sheets("Rec").Range("I6:I" & rows_c3).Value = Sheets("CDGL").Range("AJ2:AJ" & rows_c3).Value
End With
如果您需要复制单元格的格式,Range属性" Value"可以有3个可选参数10,11,12。 11是您需要传输值,格式和公式。 像这样:
Sheets("Rec").Range("B6:D" & rows_c1).Value(11) = Sheets("CDGL").Range("H2:J" & rows_c1).Value(11)
另外,请避免使用"选择"并使用" With .... End With"加快执行的声明。
答案 2 :(得分:0)
如果您的问题不是代码的有效性,而是工作时间,请将Application.ScreenUpdating = False
添加到子版的开头,将Application.ScreenUpdating = True
添加到结尾。这将极大地加快等待时间