【发布时间】:2016-03-28 22:29:30
【问题描述】:
很简单,我想知道将单元格值从一张纸复制到另一张纸的最快方法是什么。
通常,我会按列和/或行遍历单元格并使用如下行:
Worksheets("Sheet1").Cells(i,j).Value = Worksheets("Sheet1").Cells(y,z).Value
在我的范围不是连续的行/列的其他情况下(例如,我想避免覆盖已经包含数据的单元格)我将在循环内有一个条件,或者我将填充一个数组我要循环遍历的行号和列号,然后循环遍历数组元素。例如:
Worksheets("Sheet1").Cells(row1(i),col1(j)).Value = Worksheets("Sheet2").Cells(row2(y),col2(z)).Value
使用我要复制的单元格和目标单元格定义范围,然后执行Range.Copy 和Range.Paste 操作会更快吗?是否可以使用数组定义范围而不必遍历它?还是循环遍历数组以定义范围然后复制粘贴范围而不是通过循环使单元格值相等会更快吗?
我觉得可能根本无法复制和粘贴这样的范围(即,它们需要是通过矩形阵列连续的单元格并粘贴到相同大小的矩形阵列中)。话虽如此,我认为可以将两个范围的元素等同起来,而无需遍历每个单元格并将值等同起来。
【问题讨论】:
-
是什么阻止您对此进行基准测试?
-
与我正在研究的特定情况相比,我更好奇是否存在一般的“经验法则”或在所有情况下都已知最佳值。我可以根据具体情况轻松找出,但了解一种方法是否总是比另一种方法快是有益的(例如,如果一个方法遵循 Log(n) 而不是 n^2 来复制 n 值)。
标签: vba excel optimization