Как в экселе удалить все строки кроме нужных
Предположу, что почти каждый сталкивался с ситуацией, когда необходимо удалить только определенные строки: имеется большая таблица и необходимо удалить из неё только те строки, которые содержат какое-то слово (цифру, фразу). Для выполнения подобной задачи можно воспользоваться несколькими способами.
Способ первый:
Использовать встроенное средство 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, который потребует только указания значения, которое необходимо найти в строке и номер столбца, в котором искать значение.Если значение sSubStr не будет указано, то будут удалены строки, ячейки указанного столбца которых, пустые.
Данный код необходимо поместить в стандартный модуль. Вызвать с листа его можно нажатием клавиш Alt + F8 , после чего выбрать Del_SubStr и нажать Выполнить. Если в данном коде в строке
If -(InStr(Cells(li, 1), sSubStr) > 0) = lMet Then
вместо = lMet указать <> lMet , то удаляться будут строки, не содержащие указанное для поиска значение. Иногда тоже удобно.
Но. Данный код просматривает строки на предмет частичного совпадения указанного значения. Например, если Вы укажете текст для поиска "отчет", то будут удалены все строки, в которых встречается это слово("квартальный отчет", "отчет за месяц" и т.д.). Это не всегда нужно. Поэтому ниже приведен код, который будет удалять только строки, указанные ячейки которых равны конкретно указанному значению:Здесь так же, как и в случае с предыдущим кодом можно заменить оператор сравнения( Cells(li, lCol) = sSubStr ) с равно на неравенство( Cells(li, lCol) <> sSubStr ) и тогда удаляться будут строки, значения ячеек которых не равно указанному.
УДАЛЕНИЕ СТРОК НА ОСНОВАНИИ СПИСКА ЗНАЧЕНИЙ(МНОЖЕСТВЕННЫЕ КРИТЕРИИ)
Иногда бывают ситуации, когда необходимо удалить строки не по одному значению, а по нескольким. Например, если строка содержит или Итог или Отчет. Ниже приведен код, при помощи которого можно удалить строки, указав в качестве критерия диапазон значений.
Значения, которые необходимо найти и удалить перечисляются на листе с именем "Лист2". Т.е. указав на "Лист2" в столбце А(начиная с первой строки) несколько значений - они все будут удалены. Если лист называется иначе(скажем "Соответствия") в коде необходимо будет "Лист2" заменить на "Соответствия". Удаление строк происходит на активном в момент запуска кода листе. Это значит, что перед запуском кода надо перейти на тот лист, строки в котором необходимо удалить.Чтобы код выше удалял строки не по точному совпадению слов, а по частичному(например, в ячейке записано "Привет, как дела?", а в списке есть слово "привет" - надо удалить, т.к. есть слово "привет"), то надо строку:
If CStr(arr(li, 1)) = sSubStr Then
заменить на такую:
If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then
УДАЛЕНИЕ ИЗ ЛИСТА СТРОК, КОТОРЫХ НЕТ В СПИСКЕ ЗНАЧЕНИЙ(МНОЖЕСТВЕННЫЕ КРИТЕРИИ)
Т.к. в последнее время стало поступать все больше и больше вопросов как не удалять значения по списку, а наоборот - оставить в таблице только те значения, которые перечислены в списке - решил дополнить статью и таким кодом.
Значения, которые необходимо оставить перечисляются на листе с именем "Лист2". Т.е. указав на "Лист2" в столбце А(начиная с первой строки) несколько значений - после работы кода на листе будут оставлены только те строки, в которых присутствует хоть одно из перечисленных в списке значений. Если лист называется иначе(скажем "Соответствия") в коде необходимо будет "Лист2" заменить на "Соответствия". Удаление строк происходит на активном в момент запуска кода листе. Это значит, что перед запуском кода надо перейти на тот лист, строки в котором необходимо удалить.
В отличие от приведенных выше кодов, данный код ориентирован на то, что значения в списке указаны не полностью. Т.е. если необходимо оставить только те ячейки, в которых встречается слово "активы", то в списке надо указать только это слово. В этом случае если в ячейке будет записана фраза "Нематериальные активы" или "Активы сторонние" - эти ячейки не будут удалены, т.к. в них встречается слово "активы". Регистр букв при этом неважен.Чтобы код выше сравнивал значения таблицы со значениями списка по точному совпадению слов, а не по частичному, то надо строку:
If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then
заменить на такую:
If CStr(arr(li, 1)) = sSubStr Then
Для всех приведенных кодов можно строки не удалять, а скрывать. Для этого надо строку:
If Not rr Is Nothing Then rr.EntireRow.Delete
заменить на такую:
If Not rr Is Nothing Then rr.EntireRow.Hidden = True
По умолчанию все коды начинают просмотр строк с первой по последнюю заполненную на листе. И если необходимо удалять строки не с первой или не по последнюю, то надо внести корректировки в эту строку:
For li = 1 To lLastRow 'цикл с первой строки до конца
1 - это первая строка; lLastRow - определяется автоматически кодом и равна номеру последней заполненной строки на листе. Если надо начать удалять строки только с 7-ой строки(например, в первых 6-ти шапка), то код будет выглядеть так:
При использовании, в программе эксель, фильтра часто нужно удалить отфильтрованные по условию строки. При этом нередко человек сталкивается с проблемой, что удаляются не только отобранные по условию строки, но и все скрытие ячейки. Поэтому давайте разберемся, как в программе эксель удалять строки по условию.
Откроем таблицу, в которой представлен список рабочих из двух цехов. Необходимо удалить строки, относящиеся ко второму цеху.
Сначала, используя фильтр по столбцам, отобразим на экране сотрудников, которые относятся ко второму цеху.
Дальше нужно выделить только отфильтрованные строки. Для этого сначала выделяем область, содержащую отфильтрованные по условию ячейки. Потом переходим на верхнюю панель настроек, где в закладке «Главная» в блоке «Редактирования» нажимаем на иконку «Найти и выделить».
В появившемся дополнительном меню нажимаем на строчку «Выделение группы ячеек».
На экране появится меню «Выделение группы ячеек» в правой части поставьте точку напротив строки «только выделенные ячейки». В результате выделяться только отфильтрованные по условию ячейки.
После нажимаем на правую кнопку мыши и в появившемся меню нажимаем на строчку «удалить» и удаляете все выделенные по условию строки.
3 быстрых и надежных метода удаления пустых строк
Могут быть различные причины, из-за чего возникают пустые строки – например, вам достался файл Excel от кого-нибудь еще, либо файл экспортирован из какой-либо базы данных, либо вы случайно стерли информацию в нежелательных строках. При любых обстоятельствах, если вам требуется убрать пустые строки и в результате иметь чистую и красивую таблицу, необходимо выполнить ряд несложных действий . Далее разберем несколько конкретных ситуаций на следующие темы:
Не убирайте пустые строки посредством выбора пустых ячеек
На просторах интернета вы часто можете встретить следующий совет:
Это связано с тем, что, если в строке, где находится важная информация, есть лишь одна пустая ячейка, строка удаляется целиком .
Давайте рассмотрим на примере. Перед нами таблица клиентов, в ней только 6 строк . Нам хочется удалить третью и пятую строки , так как они пустые.
Воспользуйтесь описанным выше методом, и вы получите следующее:
Строка 4 (Rojer) также пропала , поскольку в столбце «Источник трафика» («Traffic source») ячейка D4 является пустой .
Так как у вас небольшая таблица, вы сможете обнаружить отсутствие данных , но в больших таблицах, которые содержат тысячи строк, вы можете удалять десятки нужных строк, даже не подозревая об этом. Если вам повезет, вы заметите пропажу за несколько часов, восстановите свой файл из резервной копии , а затем снова проделаете эту работу. Но что делать, если вам не повезло, или у вас нет резервной копии?
Устранение всех пустых строк, когда имеется ключевой столбец
Данный метод работает при условии, что у вас имеется столбец, помогающий вычислить, пустая строка или нет (так называемый, ключевой столбец ). К примеру, таковым может являться номер заказа, либо идентификатор клиента, либо нечто похожее.
Нам необходимо оставить последовательность строк без изменений, следовательно, просто сделать сортировку по этому столбцу и сместить все пустые строки в конец таблицы не получится. Итак, что же нужно сделать .
Устранение всех пустых строк, когда отсутствует ключевой столбец
Используйте такой способ , если у вас в работе находится таблица с большим количеством пустых ячеек, размещенных в различных столбцах, а вы хотите удалить именно те строки, которые абсолютно пусты .
Ключевой столбец , с помощью которого можно было бы выяснить, является строка пустой, либо нет, отсутствует в нашем примере. Что же делать? Мы сами создаем дополнительный столбец :
- Создайте столбец «Blanks» («Пустые ячейки») в самом конце своей таблицы, затем в 1-ую ячейку этого столбца запишите формулу : = COUNTBLANK (A2: C2).
Таким образом пустая строка (строка 5) удаляется , а строки с необходимой информацией остаются на месте .
- Далее удаляем дополнительный столбец . Он больше не потребуется. Либо можно поставить другой фильтр и отобразить строки, где имеется одна пустая ячейка или несколько.
Для этого уберите флажок « 0 », затем кликните « ОК ».
Среди других полезных функций он содержит несколько утилит , которые позволяют одним щелчком перемещать столбцы путем перетаскивания; удалять все пустые ячейки, строки и столбцы, а также фильтровать по выбранному значению, вычислять проценты, применять любую базовую математическую операцию к диапазону, копировать адреса ячеек в буфер обмена и многое другое.
Как удалить пустые строки за 4 простых шага
Используя Ultimate Suite, дополнительно установленный к программе Excel, вот что необходимо сделать :
Вот и все ! Всего несколько кликов, и вы получите чистую таблицу , все пустые строки пропали, а порядок строк не искажен!
Вставляйте и удаляйте строки и столбцы для оптимального размещения данных на листе.
Примечание: В Microsoft Excel установлены следующие ограничения на количество строк и столбцов: 16 384 столбца в ширину и 1 048 576 строк в высоту.
Вставка и удаление столбца
Выделите любую ячейку в столбце, а затем выберите Главная > Вставить > Вставить столбцы на лист или Удалить столбцы с листа.
Можно также щелкнуть правой кнопкой мыши в верхней части столбца и выбрать Вставить или Удалить.
Вставка и удаление строки
Выделите любую ячейку в строке, а затем выберите Главная > Вставить > Вставить строки листа или Удалить строки листа.
Можно также щелкнуть правой кнопкой мыши номер строки и выбрать Вставить или Удалить.
Параметры форматирования
При выделении строки или столбца, к которым применено форматирование, это форматирование переносится в новую вставляемую строку или столбец. Если вы не хотите применять форматирование, можно нажать кнопку Параметры вставки после выполнения вставки, а затем выбрать один из следующих параметров.
Если кнопка "Параметры вставки" не отображается, выберите Файл > Параметры > Дополнительно и в группе Вырезание, копирование и вставка установите флажок Отображать кнопку параметров вставки.
Вставка строк
Чтобы вставить одну строку: щелкните правой кнопкой мыши всю строку, над которой требуется вставить новую, и выберите Вставить строки.
Чтобы вставить несколько строк:выделите столько же строк, сколько хотите добавить сверху. Щелкните выделенные строки правой кнопкой мыши и выберите Вставить строки.
Вставка столбцов
Чтобы вставить один столбец: щелкните правой кнопкой мыши весь столбец, справа от которого хотите добавить новый, и выберите Вставить столбцы.
Чтобы вставить несколько столбцов:выделите столько же столбцов, сколько хотите добавить справа. Щелкните выделенные столбцы правой кнопкой мыши и выберите Вставить столбцы.
Удаление ячеек, строк и столбцов
Если вам больше не нужны какие-либо ячейки, строки или столбцы, вот как удалить их:
Выделите ячейки, строки или столбцы, которые вы хотите удалить.
Щелкните правой кнопкой мыши и выберите нужный вариант удаления, например Удалить ячейки (со сдвигом вверх), Удалить ячейки (со сдвигом влево), Удалить строки, или Удалить столбцы.
При удалении строк или столбцов следующие за ними строки и столбцы автоматически сдвигаются вверх или влево.
Совет: Если вы передумаете сразу после того, как удалите ячейку, строку или столбец, просто нажмите клавиши CTRL+Z, чтобы восстановить их.
Вставка ячеек
Чтобы вставить одну ячейку
Щелкните правой кнопкой мыши ячейку, над которой нужно вставить новую.
Нажмите Вставить и выберите Ячейки со сдвигом вниз.
Чтобы вставить несколько ячеек
Выделите столько же ячеек, сколько хотите добавить сверху.
Щелкните выделенные ячейки правой кнопкой мыши и выберите Вставить > Ячейки со сдвигом вниз.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Читайте также: