需要VBA的剪切和粘贴循环帮助

时间:2018-09-12 21:00:24

标签: excel vba loops

我希望您能协助我创建VBA宏。我有一个电子表格,其中包含一些正在尝试修复的格式错误。我想查找一个空范围的单元格(在提供的示例中,E6:H6)。如果范围为空,我想从其正下方的行中剪切部分数据(B7:E7),并将其粘贴到E6中。

电子表格示例

enter image description here

我有执行此操作的代码,但是我不知道如何循环执行宏以继续查找其他实例。这是我到目前为止的VBA。

Sub Range_Cut()

Range("B7:E7").Cut Range("E6:H6")

End Sub

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

这是特定于您的用例的,但是应该可以使用。可以付出更多的努力来使范围完全合格和动态。

Sub testLoop()

    Dim rng As Range
    Dim c As Range

    Set rng = Intersect(ActiveSheet.UsedRange, Range("E:E"))

    For Each c In rng

        If c.Value = "" And c.Offset(0, -1) <> "" Then
            c.Offset(1, -3).Resize(1, 4).Cut c
        End If

    Next c

    rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End Sub

它穿过E列以查找D中有值的空白单元格。找到一个空白单元格时,它将从下一行切下偏移范围并将其粘贴到E中。最后,它删除空行。

答案 1 :(得分:0)

未经测试:

Dim C As Range
For each c in activesheet.range("a2:a17").cells
    if len(c.value) = 0 then c.offset(0, 1).resize(1, 4).cut _
           c.offset(-1, 4)
next c