Добавление и удаление строк - часть повседневных задач при работе с 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 в модуль:
- Удерживая клавишу ALT, нажмите клавишу F11 (или Function + Option + F11 в Mac). Это откроет редактор VB
- В редакторе VB слева у вас будет проводник проекта. Если вы его не видите, перейдите к параметру «Просмотр» и нажмите «Обозреватель проектов».
- Щелкните правой кнопкой мыши любой объект в Project Explorer (для книги, в которой вы хотите запустить код).
- Перейдите во вкладку "Вставить" и нажмите "Модуль". Это вставит новый модуль для книги
- Скопируйте и вставьте приведенные выше коды в модуль.
И чтобы запустить эти коды, вы можете поместить курсор в любое место кода (который вы хотите запустить) и нажать клавишу F5 (или щелкнуть зеленый треугольник на панели инструментов VBA).
Я также написал подробное руководство о различных способах запуска кодов макросов VBA в Excel.
Если вам нужно использовать какой-либо из этих кодов довольно часто, вы также можете рассмотреть возможность добавления их в личную книгу макросов, а затем в QAT. Таким образом, код будет доступен вам в любой из ваших книг одним щелчком мыши.Итак, это были некоторые коды VBA, которые вы можете использовать для удаления целых строк в Excel (в разных сценариях). Ту же логику можно применить и в случае, если вы хотите удалить столбцы вместо строк (с соответствующей корректировкой в примерах кода).
Надеюсь, вы нашли этот урок полезным!