在Excel 2007中没有问题,但是当我在Excel 2016中单击以下行时,现在每次都需要一分钟以上。列中只有300行。我要做的只是剪切一列并将其粘贴到另一列旁边。
Selection.Insert Shift:=xlToRight
示例代码如下,但是我有30个这样的代码,所以花了半个小时。
Columns("E:E").Select
Selection.Cut
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
有什么想法吗?
答案 0 :(得分:1)
您是否有公式,甚至还有外部参考?然后请尝试以下方法:
ActiveWorkbook.UpdateLinks = xlUpdateLinksNever
ActiveWorkbook.UpdateRemoteReferences = False
Application.Calculation = xlManual
ActiveSheet.Columns("E:E").Cut
ActiveSheet.Columns("C:C").Insert Shift:=xlToRight
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
ActiveWorkbook.UpdateRemoteReferences = True
Application.Calculation = xlCalculationAutomatic
' If it's faster, then uncomment following line additionally
' Application.CalculateFull
答案 1 :(得分:0)
我不得不处理由薪资系统生成的 Excel xlsx 文件。不确定是什么导致列插入缓慢。在 88,000 行的文件中插入一列大约需要 25 秒。
我发现如果我将整个工作表作为值和数字格式复制到新工作表中,插入列步骤几乎会立即运行。复制整个工作表部分只需 3 秒!文件中没有公式,也没有条件格式。
这是我使用的逻辑:
' Copy source worksheet
Dim rng As Range
Set rng = Worksheets("Sheet1").Cells
rng.Copy ' note that wks.Cells.Copy is very slow
' add new worksheet
Dim newWks As Worksheet
Set newWks = Sheets.Add(After:=ActiveSheet)
newWks.Name = "Values Only"
' paste values and number format into new worksheet
newWks.Range("A1").Select
' xlPasteValues is fast too
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' if I also include a xlPasteFormats then the insert column will become very slow once again
' Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' now the column insert is blazingly fast!
newWks.Columns(14).Insert
newWks.Cells(1, 14).Interior.ColorIndex = 35
' etc.