Vba: как удалить строки на основе значения ячейки
Вы можете использовать следующий синтаксис в VBA для удаления строк на основе значения ячейки:
Sub DeleteRowsByValue()
Dim ws As Worksheet
Set ws = ActiveSheet
'clear existing filters
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
'filter range where column 2 in range is equal to "East"
ws.Range(" A1:C10 ").AutoFilter Field:=2, Criteria1:=" East "
'delete rows that are visible
Application.DisplayAlerts = False
ws.Range(" A2:C10 ").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
'remove filter
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
End Sub
Этот конкретный макрос удаляет все строки в диапазоне A1:C10 , где значение столбца B равно «Is».
Этот макрос использует следующие шаги:
- Примените фильтр к A1:C10 , чтобы отображать только строки, значение которых в столбце B равно «Is».
- Затем удалите все видимые ячейки.
- Затем снимите фильтр.
Это приведет к удалению всех строк в диапазоне A1:C10 , где значение в столбце B равно «Is».
В следующем примере показано, как использовать этот синтаксис на практике.
Пример. Использование VBA для удаления строк на основе значения ячейки
Предположим, у нас есть следующий набор данных, содержащий информацию о различных баскетболистах:
Допустим, мы хотим удалить из набора данных каждую строку, в которой столбец «Конференция» равен «Восток».
Для этого мы можем создать следующий макрос:
Sub DeleteRowsByValue()
Dim ws As Worksheet
Set ws = ActiveSheet
'clear existing filters
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
'filter range where column 2 in range is equal to "East"
ws.Range(" A1:C10 ").AutoFilter Field:=2, Criteria1:=" East "
'delete rows that are visible
Application.DisplayAlerts = False
ws.Range(" A2:C10 ").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
'remove filter
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что все строки, в которых в столбце «Конференция» было указано значение «Восток», были удалены.
Примечание . Строка Application.DisplayAlerts=False сообщает VBA не отображать процесс удаления видимых линий, что ускоряет процесс.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как применить условное форматирование к ячейкам
VBA: как подсчитать количество строк в диапазоне
VBA: как подсчитать ячейки с определенным текстом