lrow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
For p = 1 To lrow
period(p) = p
Next p
With ws2
lrow2 = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A1").Offset(lrow2, 1).Resize(lrow).Value = Application.Transpose(period)
ws1.Range(ws1.Cells(5, 1), ws1.Cells(lrow, 1)).Copy .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 2)
End With
如您所见,我正在尝试将数据列从一张纸复制到另一张纸,并且效果很好。但是,如果注意到我正在从1到lastrow的p中生成一个序列,这对我来说似乎很傻,因为我正在使用循环,并且我确定还有另一种方法可以将其复制并复制到另一张纸上。我该如何解决这个问题,因为从代码中删除application.transpose(period)行会使它运行时间缩短一半。如果有人可以提出建议,我要求一种更快的方法。谢谢。
例如。
Sheet1 Sheet2
John 1 John
Jim 2 Jim
Jack 3 Jack
我从Sheet1生成Sheet2,并且数字和名称在不同的列中。我可以像在代码中一样使用副本来命名,但是我需要自己生成数字。
最佳答案
这将输出您要查找的两列;一栏中的数字,下一栏中的名称:
Public Sub YourSolution()
Dim v
v = Sheet1.[CHOOSE({1,2},ROW(OFFSET(A1,,,COUNTA(A:A))),A1:INDEX(A:A,COUNTA(A:A)))]
Sheet2.[b3:c3].Resize(UBound(v)) = v
End Sub
它应该足够快,以至您不必费心关闭屏幕更新或将计算设置为手动。