Как удалить всю строку в Excel с помощью VBA (примеры)

Добавление и удаление строк - часть повседневных задач при работе с Excel.

Хотя вы можете легко сделать это из самого рабочего листа, иногда вы можете использовать маршрут VBA для удаления строк в Excel. Это может быть удаление определенной строки, нескольких строк в выделенном фрагменте, удаление альтернативных строк или строк, в которых есть определенное значение.

В этом руководстве я покажу вам, как удалять строки в Excel с помощью VBA (несколько сценариев).

Итак, приступим!

Удалить всю строку с помощью VBA

Чтобы удалить всю строку в Excel с помощью VBA, вам необходимо использовать метод CompleteRow.Delete.

Например, если вы хотите удалить всю первую строку на листе, вы можете использовать следующий код:

Sub DeleteEntireRow () Rows (1) .EntireRow.Delete End Sub

В приведенном выше коде сначала указывается строка, которую необходимо удалить (что делается путем указания числа в скобках), а затем для ее удаления используется метод CompleteRow.Delete.

Вы также можете удалить несколько строк, указав эти строки в коде.

Например, приведенный ниже код удалит строки с номерами 1, 5 и 9 на листе:

Sub DeleteEntireRow () Rows (9) .EntireRow.Delete Rows (5) .EntireRow.Delete Rows (1) .EntireRow.Delete End Sub

В приведенном выше коде используется та же логика, где указываются номера строк, и Excel удаляет эти строки одну за другой.

ВАЖНО: Когда вы удаляете строки с чем-то похожим на приведенный выше код, не забудьте начать удаление снизу, а затем подниматься вверх. Например, если вы начинаете сверху и сначала удаляете строку 1, все строки под ней будут сдвинуты на одну строку вверх и нумерация будет отключена (поскольку строка 5 станет строкой 4 и т. Д.)

Удалить все строки в выделенном фрагменте

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

Sub DeleteEntireRow () Selection.EntireRow.Delete End Sub

Приведенный выше код применяется к методу CompleteRow.Delete для всего выделения.

Удалить альтернативные строки (или удалить каждую третью / четвертую / N-ю строку)

Иногда вы можете получить дамп данных, где каждая вторая строка (или третья, четвертая или N-я строки) бесполезна и должна быть удалена.

Раньше я работал с финансовыми данными, где каждая вторая строка была пустой и ее нужно было удалить.

Это тот тип сценария, в котором действительно проявляется VBA.

Ниже приведен код VBA, который пройдет по всем выделенным строкам и удалит каждую вторую строку:

Sub DeleteAlternateRows () RCount = Selection.Rows.Count For i = RCount To 1 Step -2 Selection.Rows (i) .EntireRow.Delete Next i End Sub

Позвольте мне объяснить, как работает этот код VBA.

Сначала я использовал переменную RCount чтобы получить общее количество строк в выделении.

Затем я использовал цикл For Next, чтобы запустить его столько раз, сколько строк есть. Например, если имеется 12 строк, этот цикл будет выполняться от 12 до 1 (т. Е. 12 раз). Важно запускать это с последней строки в выделенном фрагменте до первой, поскольку мы не хотим, чтобы номера строк изменялись при удалении строки.

Кроме того, используется шаг -2, поскольку нам нужно удалить все остальные строки (снизу вверх). Если вы хотите удалить каждую третью строку, вы можете использовать -3.

В цикле VBA я использовал метод Selection.Rows (i) .EntireRow.Delete для удаления каждой альтернативной строки.

Удалить пустые строки с помощью VBA

Вы также можете использовать метод CompleteRow.Delete для удаления всех пустых строк.

Ниже приведен код VBA, который выберет пустые ячейки в выбранном наборе данных и удалит всю строку.

Sub DeleteBlankRows () Selection.SpecialCells (xlCellTypeBlanks) .EntireRow.Delete End Sub

В приведенном выше коде используется свойство SpecialCells для выбора и удаления всех пустых ячеек. Это тот же метод, который также позволяет нам использовать диалоговое окно «Перейти к специальному» для выбора всех пустых ячеек.

После того, как эти пустые ячейки идентифицированы с помощью SpecialCell, они затем удаляются с помощью метода CompleteRow.Delete.

Примечание. Этот метод выбирает пустые ячейки и не проверяет, пуста ли вся строка. Таким образом, если какая-либо ячейка в строке пуста, это все равно приведет к удалению всей строки.

Удалить строки с определенным словом / значением

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

Например, предположим, что у вас есть набор данных, и я хочу удалить все ячейки с текстом «Принтер» в столбце 2 выделения.

Ниже приведен код, который это сделает:

Sub DeleteRowswithSpecificValue () For i = Selection.Rows.Count To 1 Step -1 If Cells (i, 2) .Value = "Printer" Then Cells (i, 2) .EntireRow.Delete End If Next i End Sub

Приведенный выше код сначала подсчитывает общее количество строк в выделенном фрагменте. Это обеспечит выполнение цикла только такое количество раз. Затем он использует цикл For Next для просмотра всех ячеек в столбце 2.

Затем оператор IF THEN ELSE используется для проверки значения в каждой ячейке в столбце 2. И в случае, если значение / текст соответствует указанному тексту (которым в данном примере является «Принтер»).

В этом примере я проверил, соответствует ли текст определенной строке или нет. Вы также можете сделать это со значениями. Например, вы можете удалить все строки, в которых стоимость продажи меньше 1000 или больше 1000.

Примечание. Здесь важно отметить, что цикл запускается из Selection.Rows.Count To 1 чтобы убедиться, что удаление строки не повлияет на строки над ней.

Как использовать этот код VBA

Теперь позвольте мне показать вам, как использовать все коды, упомянутые в этом руководстве, для удаления всей строки.

Вам необходимо скопировать и вставить эти коды в модуль редактора Excel VB. После того, как вы скопировали эти коды, вы можете запустить макрокоды.

Ниже приведены шаги по копированию и вставке этих кодов VBA в модуль:

  1. Удерживая клавишу ALT, нажмите клавишу F11 (или Function + Option + F11 в Mac). Это откроет редактор VB
  2. В редакторе VB слева у вас будет проводник проекта. Если вы его не видите, перейдите к параметру «Просмотр» и нажмите «Обозреватель проектов».
  3. Щелкните правой кнопкой мыши любой объект в Project Explorer (для книги, в которой вы хотите запустить код).
  4. Перейдите во вкладку "Вставить" и нажмите "Модуль". Это вставит новый модуль для книги
  5. Скопируйте и вставьте приведенные выше коды в модуль.

И чтобы запустить эти коды, вы можете поместить курсор в любое место кода (который вы хотите запустить) и нажать клавишу F5 (или щелкнуть зеленый треугольник на панели инструментов VBA).

Я также написал подробное руководство о различных способах запуска кодов макросов VBA в Excel.

Если вам нужно использовать какой-либо из этих кодов довольно часто, вы также можете рассмотреть возможность добавления их в личную книгу макросов, а затем в QAT. Таким образом, код будет доступен вам в любой из ваших книг одним щелчком мыши.

Итак, это были некоторые коды VBA, которые вы можете использовать для удаления целых строк в Excel (в разных сценариях). Ту же логику можно применить и в случае, если вы хотите удалить столбцы вместо строк (с соответствующей корректировкой в ​​примерах кода).

Надеюсь, вы нашли этот урок полезным!

wave wave wave wave wave