【发布时间】:2021-04-22 17:30:34
【问题描述】:
我有下面的代码,发现复制粘贴很慢,内部颜色也很慢。
我正在尝试使用 700,000 行 + 120 列数据处理此代码。
任何提高速度的建议。
目前,我可能需要 20 多分钟才能完成这行代码。
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.DisplayStatusBar = False
For i = keycolumns + 2 To ILcol + 1
'Result.Cells(1, resultcolumn).EntireColumn.Insert
rColumnLetter = Split(Cells(1, resultcolumn - 1).Address, "$")(1)
iColumnLetter = Split(Cells(1, i - 1).Address, "$")(1)
IL.Range(iColumnLetter & "1:" & iColumnLetter & ILrow).Copy Result.Range(rColumnLetter & "1:" & rColumnLetter & ILrow)
colNum = Application.WorksheetFunction.Match(Result.Cells(1, resultcolumn - 1).Value, PL.Range("1:1"), 0)
Result.Cells(1, resultcolumn) = Result.Cells(1, resultcolumn - 1) & " Postload - " & colNum
'Result.Cells(1, resultcolumn + 1).EntireColumn.Insert
Result.Cells(1, resultcolumn + 1) = Result.Cells(1, resultcolumn - 1) & " Comparison"
ColumnLetter = Split(Cells(1, resultcolumn + 1).Address, "$")(1)
Result.Range(ColumnLetter & "1:" & ColumnLetter & ILrow).Interior.Color = RGB(146, 208, 80)
resultcolumn = resultcolumn + (2 * (i - i + 1)) + 1
Next i
【问题讨论】:
-
您能否描述一下代码应该做什么?
-
@VBasic2008 ,我的代码假设将数据复制到另一个工作表并为每列插入 2 个空白列
-
你的意思是把
A复制到A,B复制到D,C复制到G...等等? -
@VBasic2008 是的,我这样做了,但它非常慢并且需要很长时间,因为我的数据有 710k 行和 110 列数据
-
您是否尝试过使用
For直接从一个单元格转移到另一个单元格,而不是使用范围的复制/粘贴。一个用于列,另一个用于行?你的数据有可能吗?看看这个网站xylos.com/en/learning/blog/…
标签: arrays excel vba performance copy-paste