Excel как удалить строки по условию

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

Как в Excel быстро удалить строки, содержимое которых удовлетворяет определённому условию?

Это удобно сделать с помощью фильтра.

Имеем таблицу данных с заголовком.

Щелкаем на любом месте в заголовке и выбираем на Главной вкладке пункт «Сортировка и фильтр — фильтр».

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

Оставшиеся после применения фильтра ячейки / строки выделяем все вместе и выбираем пункт «Удалить строки с листа» (можно выбрать пункт «Удалить — строку» в меню после щелчка правой кнопкой мыши на выделенной ячейке).

Удалились именно те строки, которые были отфильтрованы, остальные остались на месте (нужно убрать все фильтры, чтобы их увидеть).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dim i As Integer

Если вы хотите например удалить строки из таблицы Ексель, в которых есть некое число, или слово, то выделите одну из таких строк (с наличием этого числа или слова) Всю строку выделите а не ячейку с эти содержанием. Наверху в окнах задач ищем кнопку Сортировка и фильтр (на ней воронка нарисована) нажмите по ней, в меню выползающем выберите фильтр и установите условие сортировки, нажмите Применить.

Как удалить строки в Excel по условию? Удаление и скрытие пустых строк и строк, содержащих заданное значение

Прежде чем перейти к теме статьи, разберемся, с чем мы будем иметь дело. Посмотрим на иерархию объектов в Excel. Рабочая книга (Workbook) – это файл Excel, содержащий рабочие листы. Рабочий лист (Worksheet), в свою очередь, представляет собой электронную таблицу, основной тип документа, который используется приложением Excel для хранения и обработки данных. Рабочие листы — это таблицы, состоящие из ячеек, организованных в столбцы и строки и являются частью рабочей книги. Основным элементом электронной таблицы является ячейка. Именно в ячейках содержится информация – текст, значения, формулы. Каждая ячейка имеет свой адрес – номер строки и номер столбца, на пересечении которых находится ячейка. В этой статье более подробно остановимся на строках.

Строки в Excel и основные действия с ними

Количество строк в Excel 2003 – 65 536, а число строк в Excel 2007 и Excel 2010 – уже 1 048 576. Наиболее частыми действиями со строками являются копирование, вставка, добавление новых строк, удаление и скрытие. Без особого труда можно преобразовать Excel строку в столбец и наоборот. Такое преобразование называется транспонированием . Для преобразования строки в столбец необходимо скопировать данные строки, после чего нажать правую кнопку мыши и из контекстного меню выбрать пункт «Специальная вставка…». В появившемся диалоговом окне «Специальная вставка» поставить галочку в поле «транспонировать» и нажать кнопку ОК.

Все манипуляции со строками не представляют какой-либо особой сложности, но задача существенно усложняется, когда работать приходится с большими объемами данных и в особых условиях, когда к примеру нельзя воспользоваться стандартными средствами Excel, такими как сортировка. В таких случаях на помощь как всегда приходят макросы VBA. С помощью макросов VBA Excel строки легко поддаются обработке, можно например скрыть все пустые строк и или удалить строки содержащие заданный текст.

Далее рассмотрим инструмент, в котором реализовано программное скрытие и удаление пустых строк, а также скрытие и удаление любых строк, по заданным пользователем условиям, при этом все параметры для работы программы задаются не в редакторе программного кода, а в диалоговом окне, что очень удобно. Надстройка работает как с видимыми так и со скрытыми и отфильтрованными строками .

Надстройка для удаления и скрытия строк по условию

1) Скрывать либо удалять строки, подходящие под заданное условие;

2) скрывать либо удалять строки, находящиеся ниже или выше строк, подходящих под заданное условие;

3) скрывать либо удалять заданное количество строк для каждого действия;

4) скрывать либо удалять разное количество строк для каждого действия, если количество строк указано в отдельном столбце;

5) выбирать одно из нескольких условий для искомых значений (совпадает, не совпадает, содержит, не содержит, начинается, не начинается, заканчивается, не заканчивается);

6) находить пустые строки и строки, содержащие заданный текст (либо массив из текстовых значений);

7) осуществлять одновременный поиск различных текстовых выражений, внесенных в поле для ввода текста с использованием знака-разделителя. В качестве знака-разделителя используется (;) точка с запятой;

8) выбирать различные диапазоны для обработки данных;

9) ограничивать выбранные диапазоны номерами строк сверху и/или снизу для избежания повреждения шапок таблиц и строк с разного рода промежуточными итогами;

10) осуществлять поиск текста в строках как с учетом регистра, так и без.

Диалоговое окно надстройки

По изображению диалогового окна можно получить представление о том, какие возможности предоставляются надстройкой — это удаление/скрытие пустых строк и строк, подходящих под заданные условия.

Читать еще:  Как в excel закрепить верхние две строки

Как скрыть или удалить строки по условию?

На выбор пользователя макрос может удалять/скрывать пустые строки, а может на выбор пользователя скрывать либо удалять строки, удовлетворяющие заданным условиям, например таким как содержание заданного текста, либо отсутствием такового, может учитывать регистр при поиске текста в строках, а может не учитывать. Для того, чтобы при удалении/скрытии в таблицах не пострадала шапка или промежуточные результаты, введено дополнительное ограничение по номерам строк, при помощи которого можно задавать диапазон для действия макроса. Если же диапазон не задан пользователем, то макрос работает со строками так называемого используемого диапазона, то есть со строки, в которой содержится первая заполненная информацией ячейка, до строки с последней заполненной ячейкой. Пользователю также предлагается ограничить обработку данных либо активным листом, либо всеми листами активной рабочей книги.

При помощи надстройки можно производить действия не только с самими строками, которые подходят под заданное условие, но и со строками, которые находятся выше или ниже этих строк. Кроме того, предусмотрена возможность задать количество строк для каждого действия.

Как скрывать или удалять разное количество строк?

Если в диалоговом окне надстройки установить флажок в поле «Разное количество строк», то числовое значение в поле «Для каждого действия, шт.» меняется на номер столбца, в котором содержатся значения для каждого действия. В этом случае за каждое действие будет скрыто или удалено столько строк, сколько указано в соответствующей строке заданного столбца.

Удаление (скрытие) строк по условию

макрос удалит на листе все строки, в которых содержится искомый текст:

Чтобы вместо удаления просто скрыть такие строки, замените строку

Расширенная версия этого макроса — с использованием UserForm для ввода искомого значения

Ещё один вариант кода, позволяющего выполнять поиск (с последующим удалением или скрытием строк) сразу по нескольким условиям:

  • 191594 просмотра

Комментарии

Я не занимаюсь поддержкой бесплатных макросов, и модификацией их под ваши требования.

В комментариях к статье есть очень много вариантов переделки этого макроса, — полистайте комменты, может найдете подходящий вариант кода.
Если же хотите получить готовое решение, — оформляйте заказ на сайте, сделаю (платно. минимальная стоимость заказа 1500 рублей)

Добавление комментариев к данной статье на этом отключаю.

Подскажите пожалуйста. Мучаюсь уже неделю. Не могу переделать существующие макросы для скрытия строк. Имеется таблица с цифрами. Нужно что бы скрывались строки если одновременно в столбце А и В и С и D значение меньше чем 0. Было бы не плохо это значение вводить в user form и там были кнопочки скрыть и показать все. Помогите пожалуйста. Да и ещё количество строк может бить разное. А цифровые значения начинаются с второй строки.

Здравствуйте, у меня такая ситуация. Есть таблица, с 3000 строками, и примерно 25 столбиками
Первые 10 столбиков заполнены текстом, с 11 по 25 столбик бывают цифры. Как мне удалить полностью строку, если в столбики с 11 по 25 все пустые ячейки ? а если хоть одна ячейка заполнена, то строку не трогать? но на первые десять столбиков не надо обращать внимание

А как сделать такое же условие для объеденных ячеек только по нескольким значениям?

Я должен был догадаться, какие листы надо обрабатывать, а какие нет?
Чтобы обработать ВСЕ листы, — напишите

Большое спасибо, но у меня следующие листы «3», «3А», «3Б», «4».

Подскажите, как сделать этот макрос для листов «2», «2А», «2Б» и т. д.

Sub УдалениеСтрокПоУсловию()
Dim ra As Range, delra As Range, ТекстДляПоиска As String
Application.ScreenUpdating = False ‘ отключаем обновление экрана

ТекстДляПоиска = «Наименование ценности» ‘ удаляем строки с таким текстом

‘ перебираем все строки в используемом диапазоне листа
For Each ra In ActiveSheet.UsedRange.Rows
‘ если в строке найден искомый текст
If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
‘ добавляем строку в диапазон для удаления
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next
‘ если подходящие строки найдены — удаляем их
If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub

Если необходимо наоборот отобразить строки «EntireRow.Hidden = False»
То как осуществить поиск текста в скрытых строках/столбцах?

Здравствуйте. Подскажите, пожалуйста, как прописать макрос так, чтоб он:
1. удалял все строки с заливкой цветом, или
2. удалял все строки, содержащие какую либо ячейку с заливкой цветом.
Спасибо.

Игорь,благодарю за макрос — облегчает жизнь! Вы не посоветуете как работать с этим макросом при защите листа?

Добрый день! Подскажите пожалуйста, Как сделать макрос скрывающий строки при условии что в двух подряд столбцах 0 или пусто? и чтоб он запускался не при открытии файла, а кнопкой?
у меня вариант с условием одного столбца, как его исправить

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim d As Integer
d = UsedRange.Rows.Count + 1
For rwIndex = 1 To 31
colIndex = 3
If Cells(rwIndex, colIndex).Value = 0 Then
Rows(rwIndex).Hidden = True
End If
Next
End Sub

Буду очень признательна)

Добрый день! У меня проблема с большими таблицами и с их колличеством) В одной книге у меня 25 листов на каждом большие таблицы, для удбства печати я создала макрос скрывающий ненужные строки, столбцы и ячейки во всей книге сразу, поочередно на каждом листе. Теперь хочу чтоб можно было сразу во всей книге развернуть скрытые ячейки. И не могу) Подскажите как исправить этот макрос чтоб он работал в модуле «Эта книга» для всех листов сразу

Sub Show()
Columns.Hidden = False
Rows.Hidden = False

Во — то что доктор прописал — спасибо! И извините за не корректность:)

Сандер, я написал код так, как вы просили, — если в ячейке присутствует цифра, то строка удаляется.
А вам надо было удалять только ячейки с ЧИСЛОМ (а не содержащие цифры)
Замените

Увы. работает аналогично с «Удаление (скрытие) строк по условию», т.е. если в тексте присутствует допустим «Адаптер АТ-2000 14 В22» — что там, что в вашем примере удаляет строку. Просто думал — есть что-нить персональное с цифрами.

Сандер, так попробуйте:

Здравствуйте! Пролистал, прочитал — таки не нашел ответ к своей задаче, а она такова: в столбце чередуются и текст и цифры — надо удалить строки которые содержат цифры(они естно — разные). Спасибо!

Читать еще:  Как в excel удалить дублирующиеся строки

Евгений, при работе макросов, отмена действий в Excel не работает
(что сделано макросом, никак не отменить, — так устроен Excel)

Подскажите. после удаления строк с помощью макроса, нельзя почему то вернуть назад назад изменения.Что нужно сделать чтоб вернуть изменения назад.

Здравствуйте, Нурьяна.
Моя программа нормально работает, — если ей правильно настроить
(настройка под каждый конкретный сайт, — от 1500 руб, + сама программа 2500 стоит)

PS: на будущее, размещайте коммент не в первой попавшейся статье, а в статье с описанием программы-парсера
http://excelvba.ru/programmes/Parser
можете сразу оформить заказ на парсер, в таком виде:
http://excelvba.ru/programmes/Parser/order

Здравствуй Админ! Долго Вас искала. подрабатываю на СП закупках, и уже замучилась с заполнением каталогов, сил больше нет. Как-то покупала граббер у одного программиста, ну вообще не довольна , на одну закупку граббер стоит 2800, и работает через раз. Скажите как работает Ваша программа и сколько стоит, и можно ее настроить под сайт на котором я работаю и пользоваться ею постоянно один раз заплатив?

Можем сделать под заказ, — всё будет работать как надо.

Хоть убейте — не работает. Идея в том, что макрос срабатывает при нажатии на ячейку. Берет значение из текущей активной строки и 2 столбца, ищет на другом листе и должен его просто выделить. Вся идея.
В коде грешу на
«ВзятьДанные = Cells(ActiveCell.Row, 2).Value»
Он не берет значение -> не может найти его на другом листе. Как заставить его видеть значение. ( Кавычки ставил — не помогает.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim ra As Range, finra As Range

If Target.Cells.Value = «» Then Exit Sub
If Not Intersect(Target, Range(«AF3:AF5000»)) Is Nothing Then

ВзятьДанные = Cells(ActiveCell.Row, 2).Value
Sheets(«Результат»).Select
For Each cell In Range(«A3:A2000»).Cells
If cell = ВзятьДанные Then
If finra Is Nothing Then Set finra = cell Else Set finra = Union(finra, cell)
End If
Next

If Not finra Is Nothing Then finra.EntireRow.Select
Application.ScreenUpdating = True
End If
End Sub

Андрей, так попробуйте

Со скрытием строчек все отлично. но что делать, если в дальнейшем мне нужно некоторые скрытые строки вновь раскрыть (т.к. признак для скрытия для них может в будущем быть нерелевантен)?
Сделал такую билеберду, но скрытые строки он не раскрывает 🙁 Видимо не видит скрытые строки. Помогите советом пожалуйста!

Sub Макрос()
Dim ra As Range, delra As Range, ТекстДляПоиска As String
Application.ScreenUpdating = False

For Each ra In ActiveSheet.UsedRange.Rows

If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then

If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next

If Not delra Is Nothing Then delra.EntireRow.Hidden = False
End Sub

Кирилл, так попробуйте:
УдалятьСтрокиСТекстом = Worksheets(«ИмяВторогоЛиста»).range(«a2:a10»)
или так
УдалятьСтрокиСТекстом = Worksheets(2).range(«a2:a10»)

Добрый день! Ваш макрос очень выручает, Подскажите, как сделать, чтобы слова для поиска брались не из строки = Array(«Наименование *», «Количество», «текст?», «цен*сти», «*78*»),а с другого листа

Спасибо, заработало.
Ну я и тупой.

Sub погрузка()
Dim ra As Range, delra As Range
Application.ScreenUpdating = False ‘ отключаем обновление экрана

‘ ищем и удаляем строки, содержащие заданный текст
‘ (можно указать сколько угодно значений и использовать подстановочные знаки)
УдалятьСтрокиСТекстом = Array(«ИД пункта:», «ИД маршрута:», _
«Название модели:», «Склад отгрузки:»)

‘ перебираем все строки в используемом диапозоне листа
For Each ra In ActiveSheet.UsedRange.Rows
‘ перебираем все фразы в массиве
If ra.Row >= 17 Then
For Each word In УдалятьСтрокиСТекстом
Next word
End If
‘ если в очередной строке листа найден искомый текст
If Not ra.Find(word, , xlValues, xlPart) Is Nothing Then
‘ добовляем строку в диапазон для удаления
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next

‘ если подходящие строки найдены, то (оставте одну из следующих строк)
If Not delra Is Nothing Then delra.EntireRow.Hidden = True ‘ скрываем их
If Not delra Is Nothing Then delra.EntireRow.Delete ‘ удаляем их
End Sub

Пожалуйста, подскажите что не так, в таком исполнении не хочет удалять с 17 строки.
Gjlcrf;bnt xnj yt nfr

If ra.row >= 17 then
For Each word In УдалятьСтрокиСТекстом
.
Next word
end if

Похоже я не совсем правильно выразил свою мысль, в макросе УдалениеСтрокПоНесколькимУсловиям нужно удалять строки с определенным текстом только с 17 строки и до конца листа.

Вместо
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
пишете
ra.Replace («Что заменить», «»)

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

Судя по описанию задачи, Вам нужна штатная функция Эксель — заменить. Ctrl+H. Найти — пишете нужный Вам текст, поле «Заменить на» оставляете пустым.

а можете подсказать, как можно найти и удалить текст с определенной строки.

Как удалить строки по условию?

Предположу, что почти каждый сталкивался с ситуацией, когда необходимо удалить только определенные строки: имеется большая таблица и необходимо удалить из неё только те строки, которые содержат какое-то слово (цифру, фразу). Для выполнения подобной задачи можно воспользоваться несколькими способами.

Способ первый:
Использовать встроенное средство Excel — фильтр. Сначала его необходимо «установить» на листе:

  • Выделяем таблицу с данными, включая заголовки. Если их нет — то выделяем с самой первой строки таблицы, в которой необходимо удалить данные
  • устанавливаем фильтр:
    • для Excel 2003 : ДанныеФильтрАвтофильтр
    • для Excel 2007-2010 : вкладка Данные (Data)Фильтр (Filter)(или вкладка Главная (Home)Сортировка и фильтр (Sort&Filter)Фильтр (Filter) )

Теперь выбираем условие для фильтра:

  • в Excel 2003 надо выбрать Условие и в появившейся форме выбрать непосредственно условие(«равно», «содержит», «начинается с» и т.д.), а напротив значение в соответствии с условием.
  • Для 2007-2010 Excel нужно выбрать Текстовые фильтры (Text Filters) и либо сразу выбрать одно из предлагаемых условий, либо нажать Настраиваемый фильтр (Custom Filter) и ввести значения для отбора в форме

После этого удалить отфильтрованные строки. В 2007 Excel могут возникнуть проблемы с удалением отфильтрованных строк, поэтому рекомендую сначала так же прочитать статью: Excel удаляет вместо отфильтрованных строк — все?! Как избежать.

Способ второй:
применить код VBA, который потребует только указания значения, которое необходимо найти в строке и номер столбца, в котором искать значение.

Sub Del_SubStr() Dim sSubStr As String ‘искомое слово или фраза(может быть указанием на ячейку) Dim lCol As Long ‘номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim lMet As Long Dim arr sSubStr = InputBox(«Укажите значение, которое необходимо найти в строке», «Запрос параметра», «») If sSubStr = «» Then lMet = 0 Else lMet = 1 lCol = Val(InputBox(«Укажите номер столбца, в котором искать указанное значение», «Запрос параметра», 1)) If lCol = 0 Then Exit Sub lLastRow = ActiveSheet.UsedRange.Row — 1 + ActiveSheet.UsedRange.Rows.Count arr = Cells(1, lCol).Resize(lLastRow).Value Application.ScreenUpdating = 0 Dim rr As Range For li = 1 To lLastRow ‘цикл с первой строки до конца If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Читать еще:  Как в excel сделать строки одного размера

Если значение sSubStr не будет указано, то будут удалены строки, ячейки указанного столбца которых, пустые.
Данный код необходимо поместить в стандартный модуль. Вызвать с листа его можно нажатием клавиш Alt + F8 , после чего выбрать Del_SubStr и нажать Выполнить. Если в данном коде в строке
If -(InStr(Cells(li, 1), sSubStr) > 0) = lMet Then
вместо = lMet указать <> lMet , то удаляться будут строки, не содержащие указанное для поиска значение. Иногда тоже удобно.
Но. Данный код просматривает строки на предмет частичного совпадения указанного значения. Например, если Вы укажете текст для поиска «отчет», то будут удалены все строки, в которых встречается это слово(«квартальный отчет», «отчет за месяц» и т.д.). Это не всегда нужно. Поэтому ниже приведен код, который будет удалять только строки, указанные ячейки которых равны конкретно указанному значению:

Sub Del_SubStr() Dim sSubStr As String ‘искомое слово или фраза(может быть указанием на ячейку) Dim lCol As Long ‘номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim arr sSubStr = InputBox(«Укажите значение, которое необходимо найти в строке», «Запрос параметра», «») lCol = Val(InputBox(«Укажите номер столбца, в котором искать указанное значение», «Запрос параметра», 1)) If lCol = 0 Then Exit Sub lLastRow = ActiveSheet.UsedRange.Row — 1 + ActiveSheet.UsedRange.Rows.Count arr = Cells(1, lCol).Resize(lLastRow).Value Application.ScreenUpdating = 0 Dim rr As Range For li = 1 To lLastRow ‘цикл с первой строки до конца If CStr(arr(li, 1)) = sSubStr Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Здесь так же, как и в случае с предыдущим кодом можно заменить оператор сравнения( Cells(li, lCol) = sSubStr ) с равно на неравенство( Cells(li, lCol) <> sSubStr ) и тогда удаляться будут строки, значения ячеек которых не равно указанному.

УДАЛЕНИЕ СТРОК НА ОСНОВАНИИ СПИСКА ЗНАЧЕНИЙ(МНОЖЕСТВЕННЫЕ КРИТЕРИИ)
Иногда бывают ситуации, когда необходимо удалить строки не по одному значению, а по нескольким. Например, если строка содержит или Итог или Отчет. Ниже приведен код, при помощи которого можно удалить строки, указав в качестве критерия диапазон значений.
Значения, которые необходимо найти и удалить перечисляются на листе с именем «Лист2». Т.е. указав на «Лист2» в столбце А(начиная с первой строки) несколько значений — они все будут удалены. Если лист называется иначе(скажем «Соответствия») в коде необходимо будет «Лист2» заменить на «Соответствия». Удаление строк происходит на активном в момент запуска кода листе. Это значит, что перед запуском кода надо перейти на тот лист, строки в котором необходимо удалить.

Sub Del_Array_SubStr() Dim sSubStr As String ‘искомое слово или фраза Dim lCol As Long ‘номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim avArr, lr As Long Dim arr lCol = Val(InputBox(«Укажите номер столбца, в котором искать указанное значение», «Запрос параметра», 1)) If lCol = 0 Then Exit Sub Application.ScreenUpdating = 0 lLastRow = ActiveSheet.UsedRange.Row — 1 + ActiveSheet.UsedRange.Rows.Count ‘заносим в массив значения листа, в котором необходимо удалить строки arr = Cells(1, lCol).Resize(lLastRow).Value ‘Получаем с Лист2 значения, которые надо удалить в активном листе With Sheets(«Лист2») ‘Имя листа с диапазоном значений на удаление avArr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)) End With ‘удаляем Dim rr As Range For lr = 1 To UBound(avArr, 1) sSubStr = avArr(lr, 1) For li = 1 To lLastRow ‘цикл с первой строки до конца If CStr(arr(li, 1)) = sSubStr Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If DoEvents Next li DoEvents Next lr If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Чтобы код выше удалял строки не по точному совпадению слов, а по частичному(например, в ячейке записано «Привет, как дела?», а в списке есть слово «привет» — надо удалить, т.к. есть слово «привет»), то надо строку:

Как в Excel удалить строки по условию

При редактировании больших таблиц в Microsoft Office Excel иногда нужно избавиться от целой группы данных, которые распределены по всему массиву. Вручную отыскивать нужные области достаточно трудоемкий процесс, требующий большого количества времени. Сегодня разберемся, как в excel удалить строки по условию.

Чтобы быстро избавиться от ненужных данных, необходимо воспользоваться фильтром. В качестве примера рассмотрим отчет о выручке с проданных фруктов. Необходимо убрать позиции, где выручка меньше 100.

  1. Выделяете таблицу, на главной вкладке панели инструментов ищете кнопку Сортировка и фильтр и из выпадающего списка выбираете нужную опцию.

  1. Щелкаете по стрелочке в столбце Выручка, переходите к строке Числовые фильтры и выбираете нужное условие. В нашем случае меньше.

  1. В новом окне вводите число, меньше которого будет применяться фильтрация.

  1. Выделяете полученный фрагмент таблицы, нажимаете правой клавишей мыши и выбираете Удалить строку.

  1. Снова нажимаете стрелочку вниз и щелкаете по опции снять фильтр.

  1. Таблица принимает вид без удаленных строк.

Чтобы автоматически убирать ненужные строки, можно воспользоваться специальным инструментом редактора – макросами. Эта функция требует знаний в области программирования и синтаксисе языка Visual Basic for Application (VBA), а также необходимо иметь идею для решения задачи по средствам подпрограммы. В интернете много готовых макросов, которые подходят для удаления строк в таблице. Достаточно их скачать и привязать к редактору.

Важно! Скачивайте файлы только с проверенных сайтов во избежание заражения компьютера вирусами.

Как видите, удалить строки по условию не трудно. Более продвинутые пользователи могут воспользоваться макросами, а для остальных отлично подойдет фильтрация данных по заданному критерию.

Жми «Нравится» и получай только лучшие посты в Facebook ↓

Похожие статьи

Ссылка на основную публикацию
Похожие публикации
×
×
Adblock
detector