Найти первые и последние непустые ячейки переместить диапазон наверх - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть требование, когда мне нужно импортировать XML-документ в файл Excel и перегруппировать его ниже одного примера того, как файл выглядит после импорта, где данные доступны от столбца A до F.

после импорта

After Import

Теперь у меня есть набор предопределенных столбцов, и мне нужно переместить набор на основе пустых ячеекв первом столбце.

В приведенном выше примере столбцы с B по E сгруппированы, и первая непустая ячейка столбца B начинается со строки 4. Затем мне нужно найти последнюю непустую ячейку в столбце B, здесь это B10.
Теперь мне нужно переместить все данные из диапазона от B4 до E10 наверх.как показано на рисунке ниже

Окончательный результат

Final output

Я попытался найти первый не пустой и последний не пустойклетки.Но не уверен, как выбрать диапазон ячеек и перейти к первой доступной.Не могли бы вы помочь мне в этом, пожалуйста?

Заранее спасибо ...

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Попробуйте это (не проверено):

With Range("B:E")
    .Resize(.SpecialCells(xlCellTypeConstants).EntireRow.Rows(1).Row - 1).Delete xlShiftUp
End With
0 голосов
/ 10 сентября 2018

Вы можете просто использовать переменные firstRow и lastRow, создать диапазон, а затем обрезать / переместить в B1:

Sub moveGroup()
Dim rng As Range
Dim firstRow As Long, lastRow As Long
With Columns("B")
    If .Cells(1, 1) <> "" Then  ' Remember Cells(1,1) is RELATIVE to the range "Column B"
        firstRow = 1
    Else
        firstRow = .Cells(1, 1).End(xlDown).Row
    End If
    lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
    Debug.Print "First row is: " & firstRow & "; Last row is: " & lastRow
End With

Set rng = Range("B" & firstRow & ":E" & lastRow)
rng.Cut Destination:=Range("B1")
Application.CutCopyMode = False
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...