在excel中通过vba移动单元格值

我正在使用Excel表格,并且需要一次又一次地将相同的范围移动到“P”+ 2列

所以下一个范围是“C15:G15”到“P14”。 我正在寻找一个更简单的解决scheme,而不是重复此代码,并更改数百次的范围..

ActiveWindow.SmallScroll Down:=-3 Range("C13:G13").Copy Application.CutCopyMode = False Selection.Copy Range("P12").Select Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _ , SkipBlanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 

这个快速代码段应该从第13行开始逐行列C中的第二行,直到列C中最后一个填充的单元格。

 Sub move_CG_to_PT() Dim rw As Long With Worksheets("Sheet4") '<~~set this worksheet reference properly! For rw = 13 To .Cells(.Rows.Count, "C").End(xlUp).Row Step 2 .Cells(rw - 1, "P").Resize(1, 5) = _ .Cells(rw, "C").Resize(1, 5).Value Next rw End With End Sub 

这只能传送值。 如果格式和/或主题非常重要,那么可以通过以下方式进行调整。

 Sub move_CG_to_PT_w_Formatting() Dim rw As Long With Worksheets("Sheet4") '<~~set this worksheet reference properly! For rw = 13 To .Cells(.Rows.Count, "C").End(xlUp).Row Step 2 .Cells(rw, "C").Resize(1, 5).Copy _ Destination:=.Cells(rw - 1, "P") Next rw End With End Sub