В этом руководстве будут продемонстрированы различные способы удаления строк и столбцов в Excel с помощью VBA.
Удалить всю строку или столбец
Чтобы удалить всю строку в VBA, используйте эту строку кода:
1 | Ряды (1) .Удалить. |
Обратите внимание, что мы используем Удалить метод удаления строки.
Вместо ссылки на Строки объекта, вы можете ссылаться на строки на основе их Объект диапазона с участием Весь ряд:
1 | Диапазон ("a1"). Целая строка.Удалить |
Аналогично, чтобы удалить весь столбец, используйте следующие строки кода:
1 | Столбцы (1) .Удалить |
1 | Диапазон ("a1"). ВесьСтолбец.Удалить |
Удалить несколько строк или столбцов
Используя ту же логику, вы также можете удалить сразу несколько строк:
1 | Строки ("1: 3"). Удалить |
или столбцы:
1 | Столбцы ("A: C"). Удалить |
Обратите внимание, что здесь мы ссылаемся на конкретные номера / буквы строк и столбцов, заключенные в кавычки.
Конечно, вы также можете ссылаться на всю строку диапазона:
1 | Диапазон ("a1: a10"). Вся строка. Удалить |
Примечание. Примеры ниже демонстрируют только удаление строк, однако, как вы можете видеть выше, синтаксис практически идентичен синтаксису удаления столбцов.
Удалить пустые / пустые строки
В этом примере будет удалена строка, если вся строка пуста:
1234567891011 | Sub DeleteRows_EntireRowBlank ()Тусклая ячейка как диапазонДля каждой ячейки в диапазоне ("b2: b20")Если Application.WorksheetFunction.CountA (cell.EntireRow) = 0 Тогдаcell.EntireRow.DeleteКонец, еслиСледующая ячейкаКонец подписки |
Он использует функцию листа Excel: COUNTA.
Удалить строку, если ячейка пуста
Это приведет к удалению строки, если конкретный столбец в этой строке будет пустым (в данном случае столбец B):
1 | Диапазон ("b3: b20"). SpecialCells (xlCellTypeBlanks) .EntireRow.Delete |
Удалить строку на основе значения ячейки
Это будет циклически перебирать диапазон и удалять строки, если определенное значение ячейки в этой строке говорит «удалить».
1234567891011 | Sub DeleteRowswithSpecificValue ()Тусклая ячейка как диапазонДля каждой ячейки в диапазоне ("b2: b20")Если cell.Value = "delete", тоcell.EntireRow.DeleteКонец, еслиСледующая ячейкаКонец подписки |
Дополнительные примеры удаления строк и столбцов
Удалить повторяющиеся строки
Этот код удалит все повторяющиеся строки в диапазоне:
1 | Диапазон ("b2: c100"). Удалить повторяющиеся столбцы: = 2 |
Обратите внимание, что мы устанавливаем Columns: = 2. Это указывает VBA проверять оба первых двух столбца данных при рассмотрении дублирования строк. Дубликат обнаруживается только в том случае, если оба столбца имеют повторяющиеся значения.
Если бы мы установили это значение в 1, только первая строка была бы проверена на наличие повторяющихся значений.
Удалить строки таблицы
Этот код удалит вторую строку в таблице, ссылаясь на ListObjects.
1 | ThisWorkbook.Sheets ("Sheet1"). ListObjects ("list1"). ListRows (2) .Delete |
Удалить отфильтрованные строки
Чтобы удалить только те строки, которые видны после фильтрации:
1 | Диапазон ("b3: b20"). SpecialCells (xlCellTypeVisible) .EntireRow.Delete |
Удалить строки в диапазоне
Этот код удалит все строки в диапазоне:
1 | Диапазон ("a1: a10"). Вся строка. Удалить |
Удалить выбранные строки
Этот код удалит все выбранные строки:
1 | Selection.EntireRow.Delete |
Удалить последнюю строку
Это приведет к удалению последней использованной строки в столбце B:
1 | Ячейки (Rows.Count, 2) .End (xlUp) .EntireRow.Delete |
Изменив 2 на 1, вы можете удалить последнюю использованную строку в столбце A и т. Д .:
1 | Ячейки (Rows.Count, 1) .End (xlUp) .EntireRow.Delete |
Удалить столбцы по номеру
Чтобы удалить столбец по его номеру, используйте следующий код:
1 | Столбцы (2) .Удалить |