我想使此基本功能“每次新行复制粘贴值”尽可能快地运行,因为宏会重复进行数十万次计算。在这个论坛上搜索了很长时间后,我只是找不到确切的答案。
目前,我正在复制固定范围内的输出编号,然后在工作表上的其他位置,将每个新结果集的值粘贴到新行上。
这是执行此操作的部分代码:
Row = Row +1
Range("g15:ax15").copy
Range("ea18").select
ActiveCell.Offset(Row,0).select
Selection.PasteSpecial Paste:=xlPasteValues
现在,从在该论坛上找到的内容,我可以完全替换“复制/粘贴”功能Range(destination).value = Range(results).value
以加快处理速度。但是,如果目标行每次需要偏移1,我无法弄清楚该怎么做。另外,我读到,甚至可以取消“选择”来进一步加快速度!如何?
有很多选项:
//This uses the `Destination` key word
Sub CopyAndPaste()
Dim i as long
For i = 1 to 10
Range("g15:ax15").Copy Destination:=Range("ea18").Offset(i, 0)
next i
End Sub
//If you need `PasteSpecial` then you cannot use `Destination` hence this version
Sub CopyAndPaste()
Dim i as long
For i = 1 to 10
Range("g15:ax15").Copy
Range("ea18").Offset(i, 0).PasteSpecial Paste:=xlPasteValues
next i
End Sub
有时,先将值读入数组,然后再写回电子表格会更快。这是一个例子:
Sub CopyAndPaste()
Dim i As Long, numbers As Variant, rw As Long
numbers = Range("g15:ax15")
rw = 18
For i = 1 To 10
rw = rw + 1
Range(Cells(rw, 131), Cells(rw, 131 + UBound(numbers, 2) - 1)) = numbers
Next i
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句