Удаление элементов строки, кроме column1, а затем смещение ячеек вверх для остальных - PullRequest
0 голосов
/ 14 ноября 2018

Есть ли способ удалить все элементы строки, кроме элемента строки в столбце A, а затем сдвинуть ячейки вверх только для удаленной строки, используя кодирование VBA.Прямо сейчас я вручную выбираю одну строку, кроме элемента строки в столбце A, а затем удаляю, используя ctrl + - , и выбираю смещение ячеек вверх.

Я также пробовалэто

Worksheets("sheet1").Rows(i).Delete Shift:=xlShiftUp

, но удаляет всю строку.

1 Ответ

0 голосов
/ 14 ноября 2018

Вам нужно будет указать диапазон, исключая этот столбец, например:

Worksheets("sheet1").Range("B1:D1").Delete Shift:=xlUp

Вы также можете указать, например, начиная с B2, и динамически находить последний столбец в той же строке:

With Worksheets("Sheet1")
   .Range(.Cells(2, 2), .Cells(2, .Cells(2, .Columns.Count).End(xlToLeft).Column)).Delete Shift:=xlUp
End With

Чтобы сделать это немного проще для изменения, вы можете использовать константы, и у вас должен быть тест, который lastColumn> START_COLUMN, или вы можете удалить столбец хранения.

Const ROW_OF_INTEREST As Long = 2
Const START_COLUMN As Long = 2
Dim lastColumn As Long

With Worksheets("Sheet1")
    lastColumn = .Cells(ROW_OF_INTEREST, .Columns.Count).End(xlToLeft).Column
    If lastColumn > START_COLUMN Then
        .Range(.Cells(ROW_OF_INTEREST, START_COLUMN), .Cells(ROW_OF_INTEREST, .Cells(ROW_OF_INTEREST, .Columns.Count).End(xlToLeft).Column)).Delete Shift:=xlUp
    End If
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...