Процедуры из статьи доступны в бесплатной версии !SEMTools, Lite и Pro.
Как удалить строки таблицы Excel по условию, если таких строк сотни, а условий несколько? Штатными средствами это фильтр, выделение и удаление — и так для каждого условия. Разберу их коротко, а основную часть статьи посвящу процедурам из раздела удаления диапазонов !SEMTools: выделили столбец, выбрали условие в меню — и строки, которые ему соответствуют, удалены целиком.
Если нужно удалить не всю строку, а только ячейки и сдвинуть остальные вверх, смотрите статью о том, как удалить ячейки по содержимому.
Удалить строки по условию штатными средствами Excel
Встроенные способы есть, и для разовой задачи с одним условием их хватает. Вот основные:
- Фильтр. Включите его сочетанием Ctrl+Shift+L, в нужном столбце выберите Текстовые фильтры → Содержит / Не содержит / Начинается с. Выделите отфильтрованные строки, затем Главная → Удалить → Удалить строки с листа и снимите фильтр.
- Найти и заменить. Ctrl+F → «Найти все», в списке результатов Ctrl+A, закройте окно — найденные ячейки останутся выделенными. Дальше Главная → Удалить → Удалить строки с листа.
- Сортировка. Отсортируйте таблицу по столбцу, чтобы ненужные строки оказались рядом, и удалите их одним блоком.
Оговорюсь сразу: фильтр не умеет условия вроде «есть латиница», «нет ни одной цифры» или «длина больше 50 символов». Для них приходится строить вспомогательный столбец с формулой, фильтровать его по ИСТИНА и удалять строки. Например, проверка, есть ли в ячейке цифры, через функции ПОИСК и СУММПРОИЗВ:
=СУММПРОИЗВ(--ЕЧИСЛО(ПОИСК(СТРОКА($1:$10)-1;A2)))>0
Формула ищет в ячейке A2 каждую цифру от 0 до 9 и возвращает ИСТИНА, если нашлась хотя бы одна. Аналогично латиница — поиск каждой буквы от A до Z:
=СУММПРОИЗВ(--ЕЧИСЛО(ПОИСК(СИМВОЛ(СТРОКА($65:$90));A2)))>0
А длина текста — функцией ДЛСТР, например больше 50 символов:
=ДЛСТР(A2)>50
Любую из этих формул нужно протянуть на весь столбец, отфильтровать, удалить строки, а затем удалить и сам вспомогательный столбец. В Excel 365 можно не удалять строки, а построить очищенную копию таблицы функцией ФИЛЬТР — но это уже новая таблица рядом, а не исходная.
Удалить строки таблицы в 2 клика с !SEMTools
Все процедуры этого раздела работают одинаково: вы выделяете один столбец, по которому проверяется условие, и выбираете условие в меню. Надстройка проходит ячейки снизу вверх и удаляет всю строку листа, если ячейка условию соответствует. Без формул, без фильтров и без вспомогательных столбцов.
Меню находится на вкладке !SEMTools: УДАЛИТЬ → Диапазоны → Строки на листе по выд. столбцу. В нём три группы условий:
- «Если ячейка НЕ содержит…» — ничего (пустая), букв или цифр, латиницы, цифр, конкретного слова, ни одного слова из списка;
- «Если ячейка содержит…» — латиницу, цифры, одно слово, любое слово из списка, слова из цифр;
- «Если длина содержимого…» — меньше или больше заданного числа символов.
Несколько правил, общих для всех процедур:
- Выделять нужно больше одной ячейки и только один столбец. Иначе надстройка попросит: «Выделите более 1 ячейки 1 столбца».
- Можно выделить столбец целиком, кликнув по его букве: надстройка сама обрежет выделение до последней заполненной ячейки.
- Удаляется вся строка листа, а не только строка таблицы. Если справа или слева на тех же строках лежат другие данные, они удалятся тоже.
- Строку заголовка в выделение лучше не включать: она проверяется наравне с данными.
Важный момент — удаление строк нельзя отменить. Ctrl+Z после макросов не работает, а кнопка отмены !SEMTools возвращает значения ячеек, но не удалённые строки. Перед удалением на важных данных сохраните файл или скопируйте лист.
Убрать строки с пустыми ячейками или без букв и цифр
Две процедуры из группы «Если ячейка НЕ содержит…» чистят таблицу от строк, в которых в нужном столбце фактически нет данных:
- Ничего — удаляет строку, если ячейка пустая. Пробел — это уже содержимое, такая ячейка пустой не считается.
- Букв или цифр — удаляет строку, если в непустой ячейке нет ни одной буквы и ни одной цифры: только знаки препинания, пробелы, тире, символы вроде «###» или «—». Буквы учитываются любого алфавита, не только русского и английского. Пустые ячейки эта процедура не трогает.
| Ячейка столбца | «Ничего» | «Букв или цифр» |
|---|---|---|
| (пусто) | удалит | оставит |
| — | оставит | удалит |
| « » (два пробела) | оставит | удалит |
| Артикул A-1024 | оставит | оставит |
Если нужно удалить строки, пустые целиком, а не по одному столбцу, для этого есть отдельные процедуры: смотрите, как удалить пустые строки в Excel на листе или во всей книге.
Убрать строки с латиницей или без неё
Латиница — это английские буквы A–Z в любом регистре. Процедур две, по одной в каждой группе:
- «Если ячейка содержит…» → Латиницу — удаляет строку, если в ячейке есть хотя бы одна латинская буква;
- «Если ячейка НЕ содержит…» → Латиницы — удаляет строку, если латинских букв в ячейке нет ни одной.
Типичная задача — список поисковых запросов или товаров, где нужно оставить только русскоязычные строки или, наоборот, только позиции с брендом латиницей. Учтите: для второй процедуры пустая ячейка — тоже «нет латиницы», и такая строка удалится.
| Ячейка столбца | «Латиницу» | «Латиницы» |
|---|---|---|
| купить ноутбук | оставит | удалит |
| ноутбук Lenovo | удалит | оставит |
| (пусто) | оставит | удалит |
Если латиницу нужно не удалить вместе со строкой, а сначала посмотреть, где она есть, пригодится статья о том, как найти латиницу в тексте.
Убрать строки с цифрами, без цифр или с числами
Здесь три процедуры, и разница между ними важна:
- «Если ячейка содержит…» → Цифры — удаляет строку, если в ячейке есть хотя бы одна цифра, где угодно: «iPhone 15», «A-1024», «2 шт».
- «Если ячейка НЕ содержит…» → Цифр — удаляет строку, если цифр в ячейке нет совсем. Пустые ячейки тоже попадают под условие.
- «Если ячейка содержит…» → Слова → Слова из цифр — удаляет строку, только если в ячейке есть отдельное слово-число, отделённое пробелами: «15», «2024», «3,5». «iPhone15» или «A-1024» такую строку не удалят.
| Ячейка столбца | «Цифры» | «Цифр» | «Слова из цифр» |
|---|---|---|---|
| чехол iPhone 15 | удалит | оставит | удалит |
| чехол iPhone15 | удалит | оставит | оставит |
| чехол для телефона | оставит | удалит | оставит |
«Слова из цифр» удобны для чистки поисковых запросов: строки с годами, номерами моделей и количеством удаляются, а запросы, где цифры склеены с буквами, остаются.
Удалить строку по наличию или отсутствию слова
Процедуры ищут слово целиком, а не фрагмент: при поиске слова «кот» строка «котлеты на пару» не удалится. Регистр не важен. Можно ввести и словосочетание — тогда ищется именно эта последовательность слов.
- «Если ячейка содержит…» → Слова → Одно слово — надстройка спросит слово и удалит все строки, где оно есть;
- «Если ячейка НЕ содержит…» → Слов → Конкретного слова — удалит все строки, где этого слова нет. По сути это «оставить только строки с нужным словом».
| Ячейка столбца | Одно слово «опт» | Конкретного слова «опт» |
|---|---|---|
| купить кроссовки опт | удалит | оставит |
| кроссовки оптом | оставит | удалит |
| кроссовки опт. | см. ниже | см. ниже |
А что с последней строкой? Слова разделяются пробелами, поэтому «опт.» с точкой для надстройки — другое слово. Чтобы знаки препинания не мешали, включите галочку «Игнорировать пунктуацию» в первой группе вкладки !SEMTools (название видно в подсказке при наведении): тогда точки, запятые и скобки работают как разделители слов, а сам текст в ячейках не меняется.
Удалить строки по списку слов: любое или ни одного
Если слов несколько, не нужно запускать процедуру для каждого. Выпишите слова в столбец на любом листе — по одному слову в ячейке — и выберите:
- «Если ячейка содержит…» → Слова → Любое из списка — удаляет строку, если в ячейке есть хотя бы одно слово из списка;
- «Если ячейка НЕ содержит…» → Слов → Ни одного из списка — удаляет строку, если в ячейке нет ни одного слова из списка.
Сначала выделите проверяемый столбец, затем запустите процедуру — она попросит указать диапазон со списком. Сравнение идёт по словам целиком и без учёта регистра.
| Список слов | Ячейка столбца | «Любое из списка» |
|---|---|---|
| бесплатно, скачать, торрент | скачать прайс бесплатно | удалит |
| бесплатно, скачать, торрент | купить прайс-лист | оставит |
Это классическая чистка семантики от минус-слов: список «бесплатно, скачать, своими руками, отзывы» убирает нецелевые запросы за один проход. Два нюанса. В списке должны быть именно отдельные слова, словосочетание из двух слов не сработает. И пунктуация, приклеенная к слову в ячейке, мешает совпадению: «скачать,» и «скачать» — разные слова. Перед чисткой удалите знаки препинания в проверяемом столбце или в его копии.
Удалить строки по длине текста в ячейке
Группа «Если длина содержимого…» удаляет строки по числу символов в ячейке, включая пробелы:
- Меньше — надстройка спросит число N и удалит строки, где в ячейке меньше N символов;
- Больше — удалит строки, где в ячейке больше N символов.
Ровно N символов не удаляются ни той, ни другой процедурой. Примеры задач: убрать слишком короткие запросы из одного-двух символов, отсеять заголовки длиннее 60 символов, найти обрезанные при выгрузке описания. Пустая ячейка имеет длину 0, поэтому «Меньше» при N ≥ 1 удалит и строки с пустыми ячейками.
Удалить строки по нескольким условиям
Каждая процедура проверяет одно условие в одном столбце, но их легко комбинировать:
- Любое из условий (ИЛИ). Запустите процедуры по очереди: сначала удалите строки с латиницей, затем короче 3 символов, затем по списку минус-слов. Строка, подходящая хотя бы под одно условие, исчезнет.
- Условия по разным столбцам. Выделите сначала один столбец и запустите нужное условие, затем другой — оставшиеся строки проверятся уже по второму столбцу.
- Несколько слов сразу. Вместо нескольких запусков используйте список слов — это одно условие «любое из списка».
- Все условия одновременно (И). Если удалить нужно только строки, где выполнены сразу оба условия, удобнее вспомогательный столбец с функцией И и фильтр по ИСТИНА: процедуры надстройки удаляют по каждому условию отдельно.
Кстати, если строки по нескольким условиям нужно не удалить, а найти и отметить, смотрите статью о поиске по нескольким условиям.
Почему удалились не те строки — частые ошибки
- Удалилась строка заголовка. Заголовок попал в выделение и подошёл под условие: «Запрос» не содержит цифр. Начинайте выделение со второй строки.
- Пропали данные соседней таблицы. Удаляется вся строка листа. Перенесите другие таблицы на отдельный лист или ниже обрабатываемой.
- Удалились пустые строки, хотя не просили. «Нет латиницы», «нет цифр» и «длина меньше N» верны и для пустой ячейки. Если пустые строки нужно сохранить, заполните пустые ячейки временной заглушкой, которая не подходит под условие (для «нет цифр» — 0), а после удаления очистите её.
- Слово есть, а строка не удалилась. К слову приклеен знак препинания или оно стоит в другой форме: «оптом» — не «опт». Включите «Игнорировать пунктуацию» или добавьте нужные словоформы в список.
- Удалилось не то и нужно вернуть. Отмена не вернёт удалённые строки — только сохранённая копия файла. Поэтому сначала сохраните файл.
Удалить строки таблицы Excel по условию — по латинице, цифрам, словам, списку минус-слов или длине текста — можно за пару кликов прямо на листе, без фильтров и формул. Процедуры доступны даже в бесплатной версии !SEMTools.
Итоги: как быстрее удалить строки по условию
Надеюсь, на этой странице вы нашли то, что искали, и смогли удалить лишние строки из таблицы. Фильтр подойдёт для разового простого условия вроде «содержит слово». Для латиницы, цифр, длины текста и списков слов он требует вспомогательных формул, а с !SEMTools достаточно выделить столбец и выбрать условие в меню, даже если условий несколько. Вас наверняка заинтересуют и похожие операции: удалить из текста список слов, не трогая строки, и удалить дубликаты без смещения строк.