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: как подсчитать ячейки с определенным текстом

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *