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

时间:2015-11-09 16:24:12

标签: excel vba excel-vba

我正在处理Excel工作表,需要一遍又一遍地将相同的范围移到“P”+ 2列

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

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

1 个答案:

答案 0 :(得分:3)

这个快速片段应该从第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