Excel 为什么复制和粘贴值比使单元格值等于其他单元格值要快?

Excel 为什么复制和粘贴值比使单元格值等于其他单元格值要快?,excel,vba,Excel,Vba,我编写了一个宏,将列复制到另一个工作表。我使用的代码如下: ws2.Columns("A:U").Value = ws1.Columns("A:U").Value 速度很慢,所以我尝试复制和粘贴值: ws1.Activate ws1.Columns("A:U").Copy ws2.Activate ws2.Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks

我编写了一个宏,将列复制到另一个工作表。我使用的代码如下:

ws2.Columns("A:U").Value = ws1.Columns("A:U").Value
速度很慢,所以我尝试复制和粘贴值:

ws1.Activate
ws1.Columns("A:U").Copy  
ws2.Activate
ws2.Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

第二个工作得快得多。我认为第一种方法应该更好,为什么相反呢?

区别在于Excel的工作方式:复制时,所有选定的信息都会很快进入剪贴板(它使用RAM内存)。膏体也是(准)瞬时的

第一种方法是循环遍历所有单元格/列,并逐个单元格传输信息。
实际上,你可以在速度较慢的电脑上看到这个过程。

这不是你问题的答案,但你应该阅读。你没有在相同的范围内进行测试。如果不同的范围有不同的数据,并且取决于不同的公式,则速度可能不同。所以测试
ws1.Columns(“A:U”)。复制:ws2.Columns(“A:U”)。粘贴特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlanks:=False,根据
.Value
方法转置:=False
。否则你就把“苹果”和“梨”作比较。我的坏范围对两者都一样。你真的需要复制x百万个细胞吗?