Регистрация
Войти
Стать экспертом Правила
Другие предметы

Как в Эксель (Excel) удалить строки по условию?

ОТВЕТЫ

Я знаю 2 способа, позволяющих удалить определённые строки в Эксель (Excel).

1 способ - с помощью фильтра.

2 способ - с помощью VBA.

Расскажу о каждом способе подробно.


Если это делать с помощью фильтра, то порядок действий такой:

1) Отбираем нужные строки.

2) Удаляем их.

3) Убираем фильтр.

В результате в таблице останется только то, что нужно.

**

Вот пример:

В таблице содержаться сведения о товарах и странах-производител­ях, нужно оставить только импортные товары (то есть удалить строки, где содержится "Россия").

1) Так как нас интересуют строки с определённым значением, то можно поставить фильтр так:

Щёлкнуть по любой ячейке с надписью "Россия" правой кнопкой мыши, а затем в контекстном меню выбрать пункт "Фильтр по значению выделенной ячейки".

2) В итоге останутся видимыми только те строки, которые требуется удалить.

Выделяем все строки и щёлкаем по выделенному правой кнопкой мыши, в контекстном меню выбираем "Удалить строки".

3) Строки удалятся, и таблица будет пустой (так как там пока стоит фильтр).

4) Снимаем фильтр с помощью кнопки на панели инструментов "Сортировка и фильтр".

Теперь можно убедиться, что в таблице остались строчки с только импортными товарами.

**

Другой пример:

Нужно оставить только фрукты, стоящие > 100 рублей.

Здесь фильтр по значению ячейки уже не подойдёт, поэтому поступаем по-другому:

1) Щёлкаем левой кнопкой мыши по любой ячейке столбца с ценой и вызываем фильтр - с помощью копки "Фильтр" на вкладке "Данные" или с помощью копки "Сортировка и фильтр" на вкладке "Главная".

2) Теперь щёлкаем по специальной стрелочке на столбце с ценой, и выбираем "Числовые фильтры" -> "Меньше".

3) В появившемся окне вводим 100 и нажимаем на "OK".

4) Останутся строки с ценой < 100.

5) Теперь так же, как и в 1 примере, удаляем их и убираем фильтр.

В результате в таблице будут только те товары, у которых цена > 100.


Для удаления строк по определённому условию в VBA можно написать цикл, в котором перебираются все строки и одна (несколько) ячеек сравниваются с определённым значением.

Если условие выполняется, тогда удаляем строку с помощью команды Delete.

Создаём кнопку и привязываем к ней код (это самое простое, что можно придумать):

Sub Кнопка1_Щелчок()

Dim i As Integer

For i = 1 To 10

If Cells(i, 3) < 100 Then Rows(i).Delete

Next

End Sub

Понятно, что если строчек будет не 10, а, например, 100, то цикл будет идти от 1 до 100.

В объекте Cells(i, 3) стоит цифра 3, так как проверяются данные у 3 по счёту столбца.

Но этот код всё же не идеален и некоторые строчки в цикле пропускаются (так как после команды Delete они смещаются) - придётся нажимать на кнопку не один раз, а несколько.

86
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам