Вырезание и вставка циклов с VBA требуется помощь - PullRequest
0 голосов
/ 13 сентября 2018

Я надеюсь, что вы можете помочь мне с созданием макроса 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 голосов
/ 13 сентября 2018

Не проверено:

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
0 голосов
/ 13 сентября 2018

Это зависит от вашего варианта использования, но оно должно работать.Можно приложить больше усилий, чтобы сделать диапазоны полностью квалифицированными и динамичными.

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. Затем в конце она удаляет пустые строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...