【发布时间】:2016-01-19 02:33:02
【问题描述】:
我尝试组合一个简单的循环代码并选择案例以返回所需的用户结果(我知道代码不正确)。在 J 列中,我有从 2012 年到 2017 年的一系列年份,具体取决于 J 列中的年份,我希望将 U 列中的数据剪切到 AG 并将其粘贴到正确的位置。
我想出的代码如下;
Sub Move_data()
Dim rng As Range
Dim LR As Long
LR = Range("J1048576").End(xlUp).Row
Set rng = Range(Cells(2, 10), Cells((LR), 10))
For x = 2 To LR Step 1
Select Case Range("J" & x).Value2
Case 2012
Range("BU" & x).Cut
Range("IH" & x).Paste
Range("U" & x, ":CG" & x).Cut
Range("AH" & x).PasteSpecial
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Case 2013
Range("BU" & x).Cut
Range("IH" & x).Paste
Range("U" & x, ":CG" & x).Cut
Range("AU" & x).PasteSpecial
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Case 2014
Range("BU" & x).Cut
Range("IH" & x).Paste
Range("U" & x, ":CG" & x).Cut
Range("BH" & x).PasteSpecial
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Case 2015
Range("BU" & x).Cut
Range("IH" & x).Paste
Range("U" & x, ":CG" & x).Cut
Range("BU" & x).PasteSpecial
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Case 2016
Range("BU" & x).Cut
Range("IH" & x).Paste
Range("U" & x, ":CG" & x).Cut
Range("CH" & x).PasteSpecial
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Case 2017
Range("BU" & x).Cut
Range("IH" & x).Paste
Range("U" & x, ":CG" & x).Cut
Range("CU" & x).PasteSpecial
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
End Select
x = x + 1
Else
End If
Next x
End Sub
另外我觉得循环遍历每一行可能没有时间效率,因为文件中有超过 1000 行,排序和选择所有相同的年份并一次移动所有数据可能会更快。 (但我不确定如何做到这一点)
【问题讨论】: