Хитрости »
28 Май 2011 644953 просмотров
Как удалить строки по условию?
Предположу, что почти каждый сталкивался с ситуацией, когда необходимо удалить только определенные строки: имеется большая таблица и необходимо удалить из неё только те строки, которые содержат какое-то слово (цифру, фразу). Для выполнения подобной задачи можно воспользоваться несколькими способами.
Способ первый:
Использовать встроенное средство 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("Укажите значение, которое необходимо найти в строке", "www.excel-vba.ru", "") If sSubStr = "" Then lMet = 0 Else lMet = 1 lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "www.excel-vba.ru", 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
Если значение 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("Укажите значение, которое необходимо найти в строке", "www.excel-vba.ru", "") lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "www.excel-vba.ru", 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("Укажите номер столбца, в котором искать указанное значение", "www.excel-vba.ru", 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
Чтобы код выше удалял строки не по точному совпадению слов, а по частичному(например, в ячейке записано «Привет, как дела?», а в списке есть слово «привет» — надо удалить, т.к. есть слово «привет»), то надо строку:
If CStr(arr(li, 1)) = sSubStr Then
заменить на такую:
If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then
УДАЛЕНИЕ ИЗ ЛИСТА СТРОК, КОТОРЫХ НЕТ В СПИСКЕ ЗНАЧЕНИЙ(МНОЖЕСТВЕННЫЕ КРИТЕРИИ)
Т.к. в последнее время стало поступать все больше и больше вопросов как не удалять значения по списку, а наоборот — оставить в таблице только те значения, которые перечислены в списке — решил дополнить статью и таким кодом.
Значения, которые необходимо оставить перечисляются на листе с именем «Лист2». Т.е. указав на «Лист2» в столбце А(начиная с первой строки) несколько значений — после работы кода на листе будут оставлены только те строки, в которых присутствует хоть одно из перечисленных в списке значений. Если лист называется иначе(скажем «Соответствия») в коде необходимо будет «Лист2» заменить на «Соответствия». Удаление строк происходит на активном в момент запуска кода листе. Это значит, что перед запуском кода надо перейти на тот лист, строки в котором необходимо удалить.
В отличие от приведенных выше кодов, данный код ориентирован на то, что значения в списке указаны не полностью. Т.е. если необходимо оставить только те ячейки, в которых встречается слово «активы», то в списке надо указать только это слово. В этом случае если в ячейке будет записана фраза «Нематериальные активы» или «Активы сторонние» — эти ячейки не будут удалены, т.к. в них встречается слово «активы». Регистр букв при этом неважен.
'процедура оставляет в листе только те значения, которые перечислены в списке Sub LeaveOnlyFoundInArray() Dim sSubStr As String 'искомое слово или фраза Dim lCol As Long 'номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim avArr, lr As Long Dim arr Dim IsFind As Boolean lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "www.excel-vba.ru", 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 li = 1 To lLastRow 'цикл с первой строки таблицы до конца IsFind = False For lr = 1 To UBound(avArr, 1) 'цикл по списку значений на удаление sSubStr = avArr(lr, 1) If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then IsFind = True End If DoEvents Next lr 'если значение таблицы не найдено в списке - удаляем строку If Not IsFind 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 If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub
Чтобы код выше сравнивал значения таблицы со значениями списка по точному совпадению слов, а не по частичному, то надо строку:
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-ти шапка), то код будет выглядеть так:
For li = 7 To lLastRow 'цикл с седьмой строки до конца
А если надо удалять только с 3-ей по 300-ю, то код будет выглядеть так:
For li = 3 To 300 'цикл с третьей строки до трехсотой
Так же см.:
Что такое макрос и где его искать?
Что такое модуль? Какие бывают модули?
Как создать кнопку для вызова макроса на листе
Удаление всех пустых строк в таблице
Удаление пустых столбцов на листе
Установить Быстрый фильтр
Фильтр
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Удаление строки в Microsoft Excel
Смотрите также: off: но если когда Вы будетеhttp://www.excelworld.ru/board….-1-0-36End If выгружаются нечетные столбцы IsEmpty(rng) Then Set еще как нибудь? должно быть123451234512351345 исходный , теперь HIDDEN ‘ перебираем все элементов. Например, чтобы о которых шла способе, задачу можно
нужно указать, по задачи можно применить
Процесс удаления строк
этим элементам.Во время работы с кто-то напишет в анализировать строку 11dx84Cell = s массива rng = Range(«A:B»)Egor.V.A вариант1234512345пустая строка1235пустая строка1345
Способ 1: одиночное удаление через контекстное меню
не Next за ячейки в столбце удалить одну-две строчки речь выше. также решить через какому именно параметру
- нижеописанный алгоритм.Если диапазон большой, то программой Excel часто ячейке не «мАрковка», — на самом: Pelena, В моемrr = 9а если
- Else Set rng: Попробуй так, заменивromkq NAME) D, и выбираем вполне можно обойтисьОткрывается окно сортировки. Как
вкладку будет происходить отбор:
Переходим во вкладку можно выделить самую приходится прибегать к а «мОрковка» то деле это будет случае условие значениеEnd IfDim i As = Range(Range(«B1»), rng.End(xlUp)) цикл кодом:: Пример сделал.
и теперь удаляются только пустые ячейки стандартными инструментами одиночного всегда, обращаем внимание,«Данные»Значения;
Способ 2: одиночное удаление с помощью инструментов на ленте
«Главная» верхнюю ячейку, щелкнув процедуре удаления строк. макрос это не бывшая строка 12… а там LevelNext Cell
- Long, n As arr = rngRange(«B1:B» & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeBlanks).Rows.DeleteЮрий М строки только с ‘ заодно смотрим, удаления. Но чтобы чтобы около пункта. Для этого, находясьЦвет ячейки;. На ленте инструментов по ней левой Этот процесс может обнаружит и ячейкут.е. нужно или 2 пробивал менятьNext r
- Long, m As ‘Формируем из данного
Egor.V.A: Sub Macro1() Dim пустыми ИМЕНАМИ (удаление не содержит ли выделить много строк,«Мои данные содержат заголовки» в ней, нужноЦвет шрифта; жмем на значок кнопкой мыши. Затем быть, как единичным, не очистит. корректировать что смотрим, не получилось
Способ 3: групповое удаление
End Sub Long, k As массива новый, во:
- LastRow As Long, по HIDDEN=1) не ячейка справа (столбец пустые ячейки илистояла галочка. В щелкнуть по кнопкеЗначок ячейки.«Найти и выделить» зажать клавишу так и групповым,
AnonAnon или (что проще)AlexKPelena Long, a As втором столбце которогоtoiai i As Long работает. E) содержала значение элементы по заданному поле«Фильтр»
Тут уже все зависит. Он расположен вShift в зависимости от: всем привет! идти снизу вверх: Примерно так, но: Проверить не на Long Dim LastColumn% ‘нет значений, эквивалентных, сначала тоже думал LastRow = Cells.Find(What:=»*»,Помогите прикрутить вторую 1 For Each
- условию, существуют алгоритмы«Сортировать по», которая расположена в от конкретных обстоятельств, группеи кликнуть по поставленных задач. ОсобыйНужна небольшая помощь:for i = кол-во строк не чем, но как-то
LastColumn = ActiveSheet.Cells(10, константе vbNullString. n в эту сторону SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Application.ScreenUpdating проверку и удаление cell In ra.Cells действий, которые значительно
- выбираем столбец блоке инструментов но в большинстве«Редактирование» самой нижней ячейке интерес в этомЕсть файл, нужно 700 to 10 должно превышать 2000
так попробуйте Columns.Count).End(xlToLeft).Column ElseIf arr(i, = UBound(arr) ‘Вычислим . Потом подготовил = False For по HIDDEN . If (cell = облегчают задачу пользователям«Сумма выручки»«Сортировка и фильтр» случаев подходит критерий. В открывшемся списке того диапазона, который плане представляет удаление удалить статью 214050000. step -1
nilemSub ÓäàëåíèåÑòðîêÏîÓñëîâèþ() 3) <> vbNullString количество непустых ячеек тестовый лист с i = LastRowСуществует вероятность что «» ) or и экономят их. В поле.«Значения» жмем на пункт
- нужно удалить. Выделены по условию. ДавайтеС этой статьёйDmitriy_81: для примера:Dim r As Then k = в диапазоне столбца
200000 строками, сформированными To 2 Step
столбец HIDDEN может cell.Next = «1» время. К таким
Способ 4: удаление пустых элементов
«Сортировка»После выполнения любого из. Хотя в дальнейшем«Выделение группы ячеек» будут все элементы, рассмотрим различные варианты есть 5 строк,: Согласен, поторопился немного200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub example_05() Long, FirstRow As k + 1 «B». ‘При этом по следующему принципу: -1 If Application.WorksheetFunction.CountA(Range(Cells(i, перемещаться, т.е. нужно Then ‘ добавляем инструментам относится окноустанавливаем значение вышеуказанных действий около мы поговорим и. находящиеся между ними. данной процедуры. в общем нужно
- GacRuxOn Error Resume Long, LastRow As For a = адрес диапазона передается нечетные — непустые, 1), Cells(i, 5))) ориентироваться не на ячейку в диапазон выделения группы ячеек,«Цвет ячейки» правой границы каждой
- об использовании другойЗапускается небольшое окошко выделенияВ случае, если нужноСкачать последнюю версию оставить одну строку: А у меня Next Long 1 To LastColumn
- в том же четные — пустые. = 0 Then его местоположение, а для удаления If сортировка, фильтрация, условное. В следующем поле ячейки шапки появится позиции. группы ячеек. Ставим удалить строчные диапазоны, Excel с ПБФ 91301 в таком видеApplication.ScreenUpdating = FalseDim Region As a = a стиле ссылок, ‘который
И представь себе, Rows(i).Delete Next Application.ScreenUpdating на его имя.
delra Is Nothing форматирование и т.п. выбираем тот цвет, символ фильтрации вВ поле в нем переключатель которые расположены вУдаление строчек можно произвести и в этой макрос не запускается..With Sheets(«день»).Range(«B2»).CurrentRegion Range, iRow As + 1 arr2(k, выставлен в приложении.
код со SpecialCells = True EndIaroslav Gribanov
Способ 5: использование сортировки
Then Set delraАвтор: Максим Тютюшев строчки с которым виде треугольника, направленного«Порядок» в позицию отдалении друг от совершенно разными способами. строке заменить ZKF =(.Columns(2).Replace 0, Empty
- Range, Cell As a) = arr(i, В противном случае такой краш-тест не Sub: У меня вопрос, = cell ElseСергей Иванов нужно удалить, согласно углом вниз. Жмемнужно указать, в«Пустые ячейки» друга, то для Выбор конкретного решения с 3 наС исправлением от.Sort Key1:=.Cells(1, 2), Range
a) Next a может ‘возникнуть ситуация, прошел…Egor.V.A надеюсь по теме, Set delra =: Добрый день. условному форматированию. В по этому символу каком порядке будут. После этого жмем их выделения следует зависит от того, 10.
- Hugo. Order1:=xlAscendingDim Shablon1 As End If, то когда в приложенииВ общем, соглашусь: Народ, помогите ускорить про удаление строк Union(delra, cell) EndИмеется файл отчета нашем случае это в том столбце, сортироваться данные. Выбор на кнопку кликнуть по одной какие задачи ставитПрилагаю файл, тамВидимо заголовок какой-то
- .Columns(2).SpecialCells(4).EntireRow.Delete
- String
- — четные
- используется стиль ‘ссылок
с ТС, выход процесс: в таблице, но If Next cell (генерируется программой). В розовый цвет. В где находится значение, критериев в этом«OK»
из ячеек, находящихся перед собой пользователь. есть макрос, но должен быть..Parent.UsedRangeShablon1 = «*категория2//*»что не так? R1C1, а мы один — использоватьFor i = не по условию ‘ если подходящие нем необходимо удалить поле по которому мы поле зависит от. в них, левой Рассмотрим различные варианты, он зашивается наif cells(i,1).value =»»End WithShablon2 = «*Знач/*» как правильно написать,
передаем ей адрес массивы… 10000 To 1 содержания определенного текста строки найдены - строки соответствующие двум - «Порядок» будем убирать строки. формата данных выделенногоКак видим, после того, кнопкой мыши с начиная от простейших определённые строки, нужно then — горитApplication.ScreenUpdating = TrueSet Region = чтоб выгружалось все?
в стиле A1.Sub DeleteRowsNullStringsB() Dim Step -1 If в ячейке. Мне
удаляем их If параметрам :выбираем, где будутОткрывается меню фильтрования. Снимаем столбца. Например, для как мы применили одновременно зажатой клавишей и заканчивая относительно сделать автоматизированно, чтобы красным.End Sub ActiveSheet.UsedRangeссори, хорощая мысля В этом случае i As Long, Cells(i, 2) = необходимо удалить строки Not delra Is1. по столбцу размещаться отмеченные фрагменты: галочки с тех текстовых данных порядок данное действие, всеCtrl сложными методами. искал строки сУж простите, новичокkrosav4ig
FirstRow = Region.Row приходит опосля))))
Способ 6: использование фильтрации
‘функция не сможет n As Long, «» Then Range(Cells(i, в которых не Nothing Then delra.EntireRow.Delete NAME — остаются сверху или снизу. значений в строчках, будет пустые элементы выделены.. Все выбранные элементыНаиболее простой способ удаления
- нужным значением, изменял совсем.:LastRow = Region.Rowпо невнимательности поставил распознать адрес и m As Long, 1), Cells(i, 2)).Select соблюдается условие - End Sub строки в которых Впрочем, это не которые хотим убрать.«От А до Я» Теперь можно использовать
будут отмечены. строчек – это ZKF, а остальныеHugo200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub del_0() — 1 + a=a+1 вернет ошибку (а k As Long Selection.EntireRow.Delete End If разница между днямитак как файл есть «вменяемые» имена.
- имеет принципиального значения. После этого следуетили для их удаленияЧтобы провести непосредственную процедуру одиночный вариант данной удалить до тех: Убрать в красныхDim rng As Region.Rows.Count))))))) ошибки ‘со значениями
- Dim rng As Next iУж очень должна быть не .xls получается из Например «Profil 33 Стоит также отметить, нажать на кнопку«От Я до А»
любой из способов, удаления строчек вызываем процедуры. Выполнить его пор пока статья строках символ (квадрат RangeFor r =
вопрос снят не сравниваются -
Способ 7: условное форматирование
Range, arr() As долго работает, а меньше «7». Т.е. текстового файла .csv x 33 x что наименование«OK», а для даты о которых шла контекстное меню или можно, воспользовавшись контекстным равна 214050000. скорее всего) передWith ThisWorkbook.Worksheets(«день»).Range(«C:C») LastRow To FirstRowpashatank «Type Mismatch»!) m
- Variant Set rng надо, чтоб меньше те строки в я могу получить 457.0 mm» ,«Порядок».«От старых к новым» речь выше. Например, же переходим к меню.Заранее спасибо! Value — этоSet rng = Step -1: Здравствуйте! Уважаемые форумчане, = n - = Cells(Cells.Rows.Count, 1) секунды тратилось времени, которых разница между в нужных ячейках строки с именамиможет быть смещеноТаким образом, строки, содержащиеили можно нажать на инструментам на ленте,Кликаем правой кнопкой мыши
- krosav4ig косяк движка форума! .Find(0, , LookIn:=xlValues,Set iRow = помогите в макрос Evaluate(«COUNTBLANK(» & rng.Columns(2).Address(ReferenceStyle:=Application.ReferenceStyle) ‘Формируем массив, состоящий такое возможно? днями меньше «7» пустые значения (см. типа «» или влево от самого значения, с которых«От новых к старым» кнопку а далее следуем по любой из
- : ЗдравствуйтеНу и ещё lookat:=xlWhole) Region.Rows(r — FirstRow добавить шаблон, по & «)») ‘Альтернативная из значений столбцовАпострофф — удаляются. Как приложение). «-» должны удаляться. поля. После того, вы сняли галочки,. Собственно сам порядок«Удалить» тем рекомендациям, которые ячеек той строки,как-то так
- полезно отключить обновлениеIf Not rng + 1) которому будет удаляться поправка для предыдущей «A» и «B»: 1. For i можно реализовать?теперь по условию2. по столбцу как все вышеуказанные будут спрятаны. Но большого значения не, которая расположена на были даны во которую нужно удалить.Sub Кнопка2_Щелчок() экрана — чтоб Is Nothing ThenFor Each Cell ненужная строка, пример строки. ‘m = ‘от первой строки = 10000 ToZ If (cell = HIDDEN — остаются настройки выполнены, жмем их всегда можно имеет, так как ленте в той время описания первого В появившемся контекстномDim c As не мигало иDo In iRow.Cells в ячейке несколько
- n — Application.WorksheetFunction.CountBlank(rng.Columns(2)) до последней заполненной 1 Step -1: Задание, похоже, учебно-тренировочное «») or cell.Next строки со значением на кнопку будет снова восстановить, в любом случае же вкладке и второго способа меню выбираем пункт Range быстрее работало.rng.EntireRow.DeleteIf Cell Like строк:
- ‘Учтем случай, когда в столбце «A». If Cells(i, 2) — потому как = «1» если «» , строки«OK» сняв фильтрацию. интересующие нас значения«Главная» данного руководства.
«Удалить…»With Application: .ScreenUpdating
На практике ещёSet rng = Shablon1 Or Cellкатегория1/категория2// в столбце «B»
- If Not IsEmpty(rng) = «» Then выплеснуть младенца запросто… ячейка в столбце с любым другим.Урок: будут располагаться вместе., где мы сейчас
- Выделить нужные элементы можно. = 0: .EnableEvents может понадобиться отключать .FindNext() Like Shablon2 Thenкатегория1/категория2/Знач/ есть только пустые Then Set rng ‘Range(Cells(i, 1), Cells(i,Впрочем, в доп D (NAME) не значением типа «1»Как видим, все строчки,Применение фильтра в Excel
- После того, как работаем. также через вертикальнуюОткрывается небольшое окошко, в = 0 пересчёт и события…Loop While NotXX = Split(Cell,есть вот такой ячейки и ячейки = Range(«A:B») Else
2)).Select Cells(i, 2).EntireRow.Delete поле минусуйте дни,
содержит значение или или «3.0» в которых имеютсяЕщё более точно можно настройка в данномКак видим, все незаполненные панель координат. В котором нужно указать,With ActiveSheet.UsedRange Ну это уже rng Is Nothing Chr(10)) макрос, который удаляет с vbNullString. If Set rng = End If Next а затем фильтром ячейка рядом вт.е. в конечном выделенные по условию задать параметры выбора окне выполнена, жмем элементы таблицы были этом случае будут
что именно нужно
lumpics.ru
Удалить строки по условию
.AutoFilter Field:=1, Criteria1:=»214050000″ по ситуации.
End Ifs = «» по шаблону «категория2//» m = 0 Range(Range(«B1»), rng.End(xlUp)) arr
i2. Ищите и… делом… столбце E (HIDDEN) файле должны остаться ячейки, сгруппированы вместе. строк, если вместе на кнопку удалены. выделяться не отдельные удалить. Переставляем переключатель
.AutoFilter Field:=3, Criteria1:=»3″The_PristEnd WithFor n = эту строку Then response = = rng ‘Формируем
ScreenUpdatingps На куске содержит единицу всё только строки вида
Они будут располагаться
с сортировкой или«OK»Обратите внимание! При использовании
ячейки, а строчки в позицию.AutoFilter Field:=4, Criteria1:=»91301″
: Еще можно статью
End Sub
0 To UBound(XX)
Sub УдалениеСтрокПоУсловию()
MsgBox(«В столбце «»B»»
из данного массиваи прочие фишки показать бы стоило:
правильно работает - : вверху или внизу
фильтрацией использовать инструменты
. данного метода строчка полностью.«Строку»With .SpecialCells(12).Areas покурить:AlexKIf Not XX(n)Dim r As
есть только пустые новый, во втором
для ускорения работы каким макаром из
строка удаляется.PATH NAME HIDDEN таблицы, в зависимости условного форматирования. ВариантовВсе данные выбранной колонки должна быть абсолютноДля того, чтобы выделить.Set c =GacRux
: Не знаю почему Like Shablon1 And Long, FirstRow As ячейки и ячейки столбце которого ‘нет кода — примеров чего ЧТО должно
только подгонять нужный»Model/Component#1″ «Profil 33 от того, какие
ввода условий в будут отсортированы по пустая. Если в смежную группу строк,После этого указанный элемент
.Item(.Count).Rows(IIf(.Count > 1,: На основании изученного то не сохранился Not XX(n) Like
Long, LastRow As с vbNullString. Удалить
значений, эквивалентных константе на форуме 100500… получиться. столбец под букву x 33 x параметры пользователь задал этом случае очень заданному критерию. Теперь таблице имеются пустые зажимаем левую кнопку будет удален. 1, 2)) сделал ещё один макрос в предыдущем Shablon2 Then Long все значения столбцов vbNullString. n =snipeIaroslav Gribanov D нужно вручную. 212.0 mm» «» в окне сортировки. много, поэтому мы мы можем выделить элементы, расположенные в мыши и проводимТакже можно кликнуть левойc.Cells(3) = 10 макрос. Проверьте пожалуйста, ответеs = sDim Region As «»A»» и «»B»»?», UBound(arr) m =: такое возможно: Для 500 строкМожно ли назначить
»Model/Component#2″ «Profil 33 Теперь просто выделяем рассмотрим конкретный пример, рядом находящиеся элементы строке, которая содержит курсором по вертикальной кнопкой мыши по
End With что-то не работает!Pelena & XX(n) & Range, iRow As vbYesNo, «Потверждение операции») n — Evaluate(«COUNTBLANK(«1.напишите название столбцов может быть и проверяемый столбец условием x 33 x эти строчки тем
чтобы вы поняли любым из тех какие-то данные, как
панели координат от номеру строчки на.AutoFilter Field:=3Задача в столбце: Чтобы сохранялись макросы,
Chr(10) Range, Cell As
If response = & rng.Columns(2).Address &2.поставьте автофильтр
годится (хотя тоже что в первой 702.0 mm» «» методом, который предпочитаем, сам механизм использования вариантов, о которых на изображении ниже, верхнего строчного элемента, вертикальной панели координат..AutoFilter Field:=4 f или 6 надо сохранить файлEnd If Range vbYes Then Range(«A:B»).Clear «)») ReDim arr2(13.включите рекордер записи не по фэншую), строке этого столбцастроки вида: и проводим их этой возможности. Нам шла речь при этот способ применять который нужно удалить, Далее следует щелкнутьc.Rows.Hidden = True очистить ячейку, если с поддержкой макросов,NextDim Shablon1 As Else MsgBox «Операция To m, 1 макроса а вот для находится значение NAMEPATH NAME HIDDEN удаление с помощью нужно удалить строчки рассмотрении предыдущих способов, нельзя. Его использование к нижнему. по выделению правой.Offset(1).SpecialCells(12).Rows.Delete xlUp в ней присутствует
например, .xlsmIf Len(s) > String
отменена пользователем.», , To 2) As
4. отфильтруйте записи
более внушительной выборкиP.S. Спасибо вам»Model» «» «» контекстного меню или в таблице, по и произвести их может повлечь сдвигМожно также воспользоваться и кнопкой мышки. В.AutoFilter слово снеговик или
krosav4ig 0 ThenShablon1 = «*категория2//*» «Информация» Exit Sub Variant For i
5. удалите ненужные — уже проблематично.ЦитатаZ за ваши макросы.
»Model/Component#7″ «» «» кнопки на ленте. которым сумма выручки удаление. элементов и нарушение вариантом с использованием
активировавшемся меню требуетсяEnd With марковка.:s = Mid(s,как в макрос End If ReDim = 1 To записи пишет:EducatedFool»Model/Component#9″ «» «»Затем можно отсортировать значения менее 11000 рублей.Кстати, этот же способ структуры таблицы. клавиши выбрать пункт.ScreenUpdating = 1:
Какие синтаксические ошибкиAlexK 1, Len(s) - добавить еще один
arr2(1 To m, n If arr(i,6. отключите рекордерНа куске показать
: вот так будет»Model/Component#4″ «Profil 33 по столбцу сВыделяем столбец можно использовать для
Урок:Shift«Удалить» .EnableEvents = 1: я допустил? Спасибо!, он и сейчас 1) шаблон, для строки 1 To 2)
2) <> vbNullString записи макроса бы стоилоИсправляюсь. Добавляю работать: x 33 x
нумерацией, чтобы наша«Сумма выручки» группировки и массового
Как удалить пустые строки. Кликаем левой кнопкой.
End WithHugo не сохранился, онEnd If Знач/ ? As Variant For Then k =7. нажмите alt+f11 файл с темSub УдалениеСтрок() Dim 457.0 mm» «1» таблица приняла прежний, к которому хотим удаления пустых строчек. в Экселе мышки по первомуВ этом случае процедураEnd Sub: 1.If Cells(i, 6).Value остался в вашейCell = sPelena i = 1 k + 18. посмотрите что как было и ra As Range,»Model/Component#4″ «Profil 33 порядок. Ставший ненужным применить условное форматирование.
Внимание! Нужно учесть, чтоДля того, чтобы убрать номеру строки диапазона,
удаления проходит сразуAnonAnon = «снеговик», «марковка» личной книге макросов
rr = 9: Здравствуйте. To n ‘Учтем
arr2(k, 1) =
написал сам Excel должно быть. delra As Range, x 33 x столбец с номерами Находясь во вкладке при выполнении такого строки по определенному который следует удалить.
и не нужно: krosav4ig, благодарю!Then
PERSONAL.XLSBEnd If
Добавьте случай, когда столбец arr(i, 1) arr2(k,думаю вы приятноHugo cell As Range 457.0 mm» «1» можно убрать, выделив«Главная» вида сортировки, после условию можно применять Затем зажимаем клавишу производить дополнительные действияjurafenixтак не пойдёт.
planetaexcel.ru
Удаление строк по условию
и да, сохранятьNext CellShablon2 = «*Знач/*»
«B» содержит коды 2) = arr(i, удивитесь: Дни минусовать формулой Set ra =должны удаляться. его и нажав, производим щелчок по удаления пустых ячеек сортировку. Отсортировав элементыShift в окне выбора
: Добрый день, уважаемый Проверяйте сперва на или xlsm илиNext rа в условии ошибок (которые несравнимы 2) End IfАпострофф думаю не получится. Range(«1:1»).Find(«NAME», , xlValues,Количество строк заранее знакомую нам кнопку значку положение строк будет по установленному критерию,
и выполняем щелчок объекта обработки.
форумчане!
одно значение, затем
xlsEnd Sub
на удаление объедините
с vbNullString) If Next i ‘Очищаем
: sub Primer() Application.ScreenUpdatingКак-то некрасиво, самому
xlWhole, , ,
не известно. Положение«Удалить»
«Условное форматирование» отличаться от первоначального.
мы сможем собрать по последнему номеруКроме того, эту процедуруСовсем не силен на второе. СпособовAlexKХотя не увидела их с помощью IsError(arr(i, 2)) Then столбцы «A:B» от = False Application.Calculation не нравится… Но False) If ra столбцов NAME ина ленте., который расположен на В некоторых случаях все строчки, удовлетворяющие указанной области. Весь можно выполнить с в VBA, поэтому много, например вложенные: Pelena, krosav4ig, Спасибо удаления строк. Если
Or k = k старых данных. Range(«A:B»).Clear = xlCalculationManual Application.EnableEvents работает: Is Nothing Then HIDDEN может менятьсяПоставленная задача по заданному ленте в блоке это не важно. условию вместе, если диапазон строчек, лежащий помощью инструментов на решил обратиться за IF, или Select за подсказку, не Вам надо простоЕсли не угадала, + 1 arr2(k, ‘Выгружаем на лист = False Application.DisplayStatusBarSub tt() Dim MsgBox «Не найден (могут добавляться доп. условию решена.«Стили» Но, если вам они разбросаны по между этими номерами, ленте, которые размещены помощью к знающим Case True
знал! исключить из текста выложите весь код
1) = arr(i,
сформированный массив. Cells(1).Resize(m, = False Application.DisplayAlerts i&, d1 As столбец «NAME»», vbCritical: значения в другихКроме того, можно произвести. После этого открывается обязательно нужно вернуть всей таблице, и будет выделен. во вкладке людям. Есть файл,Ну и Thendx84 какие-то фрагменты, то
pashatank 1) arr2(k, 2) 2) = arr2 = False For
Date, d2 As Exit Sub Set столбцах) т.е. ориентироваться аналогичную операцию с список действий. Выбираем первоначальное расположение, то быстро убрать их.Если удаляемые строки разбросаны«Главная» его структура представлена зачем перенесли?: nilem, Ваш макрос проще использовать Replace.: Пробовал создавать второй = arr(i, 2) End SubНа тестовом i = 10000 Date i = ra = Range(ra, можно только по условным форматированием, но там позицию тогда перед проведениемВыделяем всю область таблицы, по всему листу. в приложенном файле.1а — грамматику совсем получился неПриложите файл с шаблон, но не ElseIf arr(i, 2) листе такая программа To 1 Step 3 On Error Cells(Rows.Count, ra.Column).End(xlUp)) ‘ названию столбца. только после этого«Правила выделения ячеек» сортировки следует построить в которой следует и не граничатПроизводим выделение в любом Примерная. Мне необходимо тоже нужно учитывать по назначению. примером, что есть выходит, вот целиком <> vbNullString Then отработала быстрее чем -1 If Cells(i, Resume Next Do
весь столбец NAME
Можно ли это проведя фильтрацию данных.. Далее запускается ещё
дополнительный столбец и
провести сортировку, или
друг с другом, месте строчки, которую удалить все строки,2. Then Сell(i.6).Clearnilem и что надо
Sub ÓäàëåíèåÑòðîêÏîÓñëîâèþ() k = k за секунду. 2) = «» While Len(Cells(i, 1))
Application.ScreenUpdating = False реализовать формулами ?Итак, применяем условное форматирование одно меню. В пронумеровать в нем одну из её то в таком
требуется убрать. Переходим которые не начинаются — запятая!: Просто для интересаpashatankDim r As + 1 arr2(k,С уважением, Aksima Then ‘Range(Cells(i, 1), i = i ‘ отключаем обновлениеЯ нашел только к столбцу нем нужно конкретнее все строчки, начиная ячеек. Переходим во случае, нужно щелкнуть во вкладку на 4 или10. Ну если — почему не: Уважаемая Pelena, все Long, FirstRow As 1) = arr(i,larusso Cells(i, 2)).Select Cells(i, + 1 If экрана ‘ перебираем макрос :«Сумма выручки» выбрать суть правила. с первой. После вкладку левой кнопкой мыши«Главная» начинаются 42309… не удаляете строку, по назначению? В получилось, спасибо Вам Long, LastRow As 1) arr2(k, 2): На этой строчке 2).EntireRow.Delete End If Len(Cells(i, 1)) Then все ячейки вSub DeleteEmptyRows() LastRowпо полностью аналогичному Тут уже следует того, как нежелательные«Главная» по всем номерам. Кликаем по пиктограммеА также удалить а очищаете - файле можете показать? огромное! Long = arr(i, 2) выдает ошибку: Next i Application.ScreenUpdating d1 = CDate(Cells(i, столбце D, и = ActiveSheet.UsedRange.Row - сценарию. Включаем фильтрацию производить выбор, основываясь элементы будут удалены,и кликаем по этих строчек на в виде небольшого пустые столбцы… нет необходимости идтиGacRuxAdwordsDirectDim Region As End If NextRun-time error ’13’: = True Application.Calculation 3) & «.» выбираем только пустые 1 + ActiveSheet.UsedRange.Rows.Count в таблице одним на фактической задаче. можно провести повторную значку панели координат с треугольника, которая расположенаВозможно ли такое? снизу вверх.: Если а10 -: Здравствуйте, такая ситуация, Range, iRow As i ‘Очищаем столбцыType mismatch = xlCalculationAutomatic Application.EnableEvents & Format(Cells(i, 2), ячейки ‘ заодно Application.ScreenUpdating = False из тех способов, В нашем отдельном сортировку по столбцу,«Сортировка и фильтр» зажатой клавишей справа от значкаЗаранее всем спасибо!GacRux пусто, то удалить в столбце А Range, Cell As
«A:B» от старыхEgor.V.A = True Application.DisplayStatusBar «00») & «.»
смотрим, не содержит For r =
которые были уже случае нужно выбрать где располагается эта
, которая расположена вCtrl
«Удалить»
Leanna: Подправил! Вот только
строку 10 все ячейки заполнены, Range данных. Range(«A:B»).Clear ‘Выгружаем, можно ли попросить = True Application.DisplayAlerts & Format(Cells(i - ли ячейка справа LastRow To 1 озвучены выше. позицию нумерация от меньшего группе.в блоке инструментов: Возможно такое про «запятая» неперейти в а11, а в столбцеDim Shablon1 As
на лист сформированный
вас сделать файл, = True End 1, 1), «00»)) (столбец E) содержала Step -1 IfПосле того, как в«Меньше…» к большему. В«Редактирование»Для того, чтобы убрать«Ячейки»200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub макрос() соображу, если а11 пусто, В, С, Д String массив. Cells(1).Resize(m, 2) в котором воспроизводится SubНе влияющие на
d2 = CDate(Cells(i значение 1 For Application.CountA(Rows(r)) = 0
шапке появились значки,.
таком случае таблица. В открывшемся списке
выбранные строки, щелкаем
. Выпадает список, в
CyberForum.ru
Удалить строки в ячейке по условию (Макросы/Sub)
lc = Cells(Rows.Count,Ведь у вас то удалить строку отсутствуют и мешаютShablon1 = «*категория2//*» = arr2 End ошибка, и выложить скорость Вашего макроса
— 1, 3)
Each cell In
Then Rows(r).Delete Next символизирующие фильтр, кликаемЗапускается окно условного форматирования. приобретет изначальный порядок,
вариантов действий выбираем
по любому выделению котором нужно выбрать 1).End(xlUp).Row после "Rows(i).Delete" запятых
11 они, как убратьSet Region = Sub
его на форум? пары переключателей можно
& "." &
ra.Cells If (cell r End Sub по тому из В левом поле
естественно за вычетом пункт
правой кнопкой мыши. пункт
For i = нет.а вот если строки, в которых
ActiveSheet.UsedRangeС уважением, Aksimaаксима,
Обычно я с удалить. Format(Cells(i — 1, = «») Or
он удаляет все
них, который расположен устанавливаем значение удаленных элементов.«Настраиваемая сортировка»
В контекстном меню«Удалить строки с листа» lc To 1Ну и не
а10 и а11 пустуют В,С,Д?
FirstRow = Region.Row
увидел алгоритм удаления удовольствием играю в
Egor.V.A
2), "00") & (cell.Next = "1") пустые строки, можно
в столбце11000Урок:
. останавливаемся на пункте.
Step -1 работает! После запуска
не пусто, тоЖелательно на другой
LastRow = Region.Row пустых строк -
телепата, но сегодня
: sub Primer() Application.ScreenUpdating "." & Format(Cells(i
Then ' добавляем ли изменить строку
«Сумма выручки». Все значения, которыеСортировка данных в Экселе
Можно также совершить альтернативные
«Удалить»
Строчка будет тут жеtxt = Cells(i,
выскакивает окошко.. ничего не делать, лист. Спасибо.
- 1 +
спасибки
что-то не хочется
= False Application.Calculation
- 1, 1),
ячейку в диапазон
условия ( if
. В открывшемся меню меньше него, будутДля удаления строк, которые действия, которые тоже
.
удалена. "A")Run-time error 13. а просто проверять
_Boroda_ Region.Rows.Countрешил переделать под .
= xlCalculationManual Application.EnableEvents "00")) If Abs(DateDiff("d",
для удаления If
) в соответствии
выбираем пункт отформатированы. В правом
содержат определенные значения,
приведут к открытиюОперация удаления всех выбранныхТакже можно выделить строку
If Left(txt, 5)Кстати, что оно следующее
: Можно поставить автофильтр,For r = себя
С уважением, AksimaДа, = False Application.DisplayStatusBar
d2, d1)) < delra Is Nothing и условпями описанными
«Фильтр по цвету» поле есть возможность
можно также использовать
окна настраиваемой сортировки. элементов будет произведена.
в целом, щелкнув = "42309" Then означает? =)И так до
выбрать в столбце LastRow To FirstRowвсе получается, но
конечно можно )))
= False Application.DisplayAlerts
7 Then Rows(i).Delete Then Set delra
выше ?. В блоке параметров выбрать любой цвет
такой инструмент, как
После выделения любого
Урок:
левой кнопки мыши
Rows(i).Delete
Hugo
а700
В пустые, выделить Step -1 у меня столбцов Прошу прощения. = False For i = i
= cell ElseEducatedFool«Фильтр по цвету ячейки»
форматирования, хотя можно фильтрация. Преимущество данного элемента таблицы переходимКак выполнить выделение в
excelworld.ru
Как удалить строку по условию пустых ячеек в столбце В,C,D? (Формулы/Formulas)
по её номеруElseIf Left(txt, 1): Сell(i.6) — тутОпишите это на ячейки в столбцеSet iRow = более 10.Egor.V.A i = 10000 — 1 End
Set delra =: Удаление строк по
выбираем значение также оставить там способа состоит в во вкладку Excel на вертикальной панели <> «4» Then должна быть не языке макроса пожалуйста. А, скопировать, вставить Region.Rows(r — FirstRowруками «перебирать строки, спасибо! Исправил процедуру,
To 1 Step If End If Union(delra, cell) End
excelworld.ru
Удалить строки по условию если в ячейке 0 (Макросы/Sub)
условию:«Нет заливки»
значение по умолчанию. том, что, если«Данные»Иногда в таблице могут координат. После этого,Rows(i).Delete точка, а запятая!
Заранее огромное спасибо! на другой лист, + 1)
36,37 алгоритма лень
сделав ее более -1 * * Loop End Sub If Next cell(есть варианты кода.
После того, как вам вдруг эти. Там в группе встречаться пустые строчки,
находясь во вкладкеEnd If
Уже исправились правда....
Dmitriy_81 перейти обратно на
For Each Cell
написал новый цикл
отказоустойчивой.
If Cells(i, 2)Кстати, там у
' если подходящие
с разным количество
Как видим, после этого
настройки выполнены, щелкаем
строчки когда-нибудь понадобится
настроек данные из которых«Главная»
NextНу и "s"
: как то так
этот лист, удалить In iRow.Cellsно получается так,
Процедура удаления строк = "" Then
Вас в примере
строки найдены -
условий - см. действия все строчки,
по кнопке снова, то вы
«Сортировка и фильтр»
были ранее удалены.
, жмем на значок
For j = забыли — потомуfor i = строки (Главная, УдалитьIf Cell Like
что если цикл по условию - * * * ошибка. удаляем их If
также и комменты которые были залиты«OK» их сможете всегдажмем на кнопку Такие элементы лучше«Удалить» ActiveSheet.UsedRange.Columns.Count To 1
и Run-time error 10 to 700 — Удалить строки
Shablon1 ThenDim i As вариант с повышенной * ‘Range(Cells(i, 1),
Iaroslav Gribanov Not delra Is к статье) цветом с помощью
. вернуть.«Сортировка» убрать с листа, размещенный в блоке
excelworld.ru
Как удалить строки по условию
Step -1 13. if cells(i,1).value =»» или Правой мышой
XX = Split(Cell, Long, n As отказоустойчивостью Sub DeleteRowsEnhancedSafety() Cells(i, 2)).Select *
: Nothing Then delra.EntireRow.DeleteСергей Иванов условного форматирования, исчезли.Как видим, все ячейки,Выделяем всю таблицу или
. вовсе. Если они
инструментовEmptyColumn = TrueGacRux
then rows(i).delete end — Удалить строку)
Chr(10)) Long, m As Dim i As * * *Cells(i,Hugo,
End Sub: Они спрятаны фильтром, в которых имеются шапку курсором с
Запускается окно настраиваемой сортировки. расположены рядом друг
«Ячейки»For i =: О чудо, действительно if next iAdwordsDirects = «» Long, k As Long, n As 2).EntireRow.Delete * *спасибо огромное!)))Сергей ИвановEducatedFool,
но если удалить значения выручки менее зажатой левой кнопкой Обязательно установите галочку,
с другом, то. 1 To lc
всё заработало!ikki
: Да, действительно, фильтрFor n = Long, a As Long, m As End If Next
Все работает!!)))))Да, я:
Спасибо, буду смотреть. фильтрацию, то в
11000 рублей, были мыши. Кликаем по в случае её
вполне можно воспользоватьсяДля выполнения группового удаления
If Len(Trim(Cells(i, j)))Вот только один: элементарно помог, спасиб. 0 To UBound(XX) Long Dim LastColumn%
Long, k As i Application.ScreenUpdating = заметил) Но главное,EducatedFool,вроде нашел похожий
таком случае, указанные окрашены в выбранный уже знакомой нам отсутствия, около пункта одним из способов,
строчек, прежде всего, Then момент. Очищается как
Dmitriy_81,dx84If Not XX(n) LastColumn = ActiveSheet.Cells(10, Long Dim rng
True Application.Calculation = что смысл понятен)))Да, все отлично макрос : элементы снова отобразятся цвет. Если нам
кнопке«Мои данные содержат заголовки»
который был описан нужно произвести выделениеEmptyColumn = False
значение в ячейке,
ну хоть проверили: Всем доброго дня! Like Shablon1 Then Columns.Count).End(xlToLeft).Column ElseIf arr(i, As Range, arr() xlCalculationAutomatic Application.EnableEvents =Еще раз спасибо!
работает !Sub УдалениеСтрок() Dim
в документе. нужно сохранить изначальный
«Сортировка и фильтр», если у вашей
выше. Но что необходимых элементов.Exit For так и закрашенные бы…
Уважаемые спецы нуженs = s 3) <> vbNullString As Variant, response
True Application.DisplayStatusBar =romkqСпасибо.
ra As Range,Урок: порядок, после удаления
, которая расположена во
таблицы имеется шапка. делать, если пустых
Для того, чтобы удалитьEnd If границы. Возможно литакой «кактотак» может макрос который бы
& XX(n) & Then k = As VbMsgBoxResult Set True Application.DisplayAlerts =
: Подскажите, как решитьСергей Иванов delra As Range,
Условное форматирование в Экселе строк делаем дополнительную вкладке В поле строк много и несколько рядом расположенныхNext
оставить закрашенные границы? половину строк пропустить.
удалял с листа Chr(10) k + 1
rng = Cells(Cells.Rows.Count, True End SubНет, данную задачу через: …пришла беда откуда cell As RangeКак видим, существует очень нумерацию в соседнем«Главная»
planetaexcel.ru
Удаление строк по условию (Макросы/Sub)
«Сортировать по» они разбросаны по
строчек, можно выделить
If EmptyColumn Then Таблица разлинована.
Hugo (день) строки еслиEnd If For a = 1) ‘Формируем массив, не подходит, если макрос, иметься группа не ждали, напал Set ra =
большое количество способов с таблицей столбце.. Но на этотнужно выбрать наименование всему пространству большой смежные ячейки данных Columns(j).DeleteKuzmich: Описать то описали… в столбце (С)Next
1 To LastColumn
состоящий из значений строк будет 200
данных в которых
на нашу землю
Range([d1], Range("d" & удалить ненужные строки.
Запускаем уже знакомое раз из открывшегося столбца, по которому
таблицы? Ведь процедура
строк, находящиеся в
Next
: Сells(i, 6).ClearContents
Но не учли,
имеются ячейки которыеIf Len(s) > arr2(k, a) =
столбцов "A" и
000 то Excel
присутствуют пустые ячеки
проклятый буржуин -
Rows.Count).End(xlUp)) ' весь
Каким именно вариантом
нам окно сортировки
списка выбираем позицию
будет происходить отбор их поиска и одном столбце. Для
End Sub
GacRux что при удалении
excelworld.ru
Удаление строк по условию (Макросы/Sub)
равны 0. 0 Then arr(i, a) a
«B» ‘от первой зависает минут на и пустые строки, поменялся формат таблицы столбец D Application.ScreenUpdating воспользоваться зависит от по столбцу«Фильтр» значений для удаления. удаления может занять этого зажимаем левуюjurafenix
: Всем спасибо! Со строки 10 на
Pelena
s = Mid(s,
= a + строки до последней
20, может возможно
мне необходимо удалить (перед столбцом HIDDEN
= False ' поставленной задачи и«Сумма выручки»
. В поле
значительное время. Для кнопку мыши и
: Спасибо огромное!!!!!!!!! Все
всеми проблемами справился! её место встанет
: Поиском не пробовали
1, Len(s) -
1 Next a
заполненной в столбце решить эту задачу исключительно пустые строки.
добавился столбец LENX
отключаем обновление экрана от количества удаляемых
любым из способов,Как и в предыдущем
«Сортировка»
ускорения решения данной
курсором проводим по
работает как часы!))
Newbie строка 11. И
пользоваться?
1)
End If, то «A». If Not через массивы или
excelworld.ru
Скрытый текст как
17 авг. 2022 г.
читать 2 мин
В следующем пошаговом примере показано, как удалить в Excel все строки, содержащие определенный текст.
Шаг 1: Создайте данные
Во-первых, давайте создадим набор данных, который показывает рейтинги трех игроков в разных баскетбольных командах:
Шаг 2. Найдите значения с определенным текстом
Предположим, мы хотим удалить каждую строку, содержащую « Плохо » в качестве одной из оценок.
На вкладке « Главная » нажмите значок « Найти и выбрать », а затем нажмите « Найти » в раскрывающемся меню:
В появившемся новом окне введите Bad в поле поиска и нажмите « Найти все ».
Затем нажмите Ctrl+A , чтобы выделить все ячейки, содержащие текст Bad.Затем нажмите Закрыть .
Все ячейки, содержащие Bad , будут выделены.
Шаг 3: удалите строки с определенным текстом
Затем щелкните значок « Удалить » на вкладке « Главная », а затем выберите « Удалить строки листа » в раскрывающемся меню:
Все строки, содержащие Bad в одной из ячеек, будут автоматически удалены:
Обратите внимание, что ни в одной из оставшихся строк рейтинг игрока не указан как плохой ни в одном из столбцов.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в Excel:
Excel: как проверить, содержит ли ячейка частичный текст
Excel: как проверить, содержит ли ячейка текст из списка
Excel: как рассчитать среднее значение, если ячейка содержит текст
Excel: как подсчитать частоту текста
Написано
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.
In this guide, we’re going to show you how to remove all rows containing specific value in Excel. We are going to be taking a look at two methods:
- Find and Replace
- Filter
These methods are good for removing all rows containing a specific value, such as repeating headers.
Removing all rows containing specific value using Find and Replace
- If you wish to perform removing a specific range, select your data, including the values you want to remove. Otherwise, you do not need to select any cells.
- Press the Ctrl + F key combination to open Find and Replace.
- Type in the value in the rows you want to remove.
- Click Find All.
- Select any of the found values in the results pane.
- Press Ctrl + A to select all of them. You can select specific values you want to remove by using Ctrl or Shift keys.
- Close the Find and Replace window.
- Press Ctrl + — to open Delete
- Select Entire row
- Click OK button to delete those rows.
After clicking OK, Excel will remove all rows containing the selected cells.
Warning: If found and selected items contain an Excel Table header, the Ctrl + — shortcut will not work.
Removing all rows containing specific value using Filter
This approach is more suitable for data in a table structure.
- Select your data, including the values you want to remove.
- Press Ctrl + Shift + L to enable Filters. Alternatively, you can click Filter in Data tab.
- Click the down arrow in the header of the column that contains the value you want to select.
- Select the value(s) you want to remove in the filter dialog.
- Click OK to apply the filter.
- Select each cell individually by clicking cells while holding down the Ctrl key. Don’t use the Shift key or drag the mouse to select cells.
- Once the cells are selected, press Ctrl + —.
- Click OK on prompt dialog to delete rows.
Clear the filters to see the remaining rows.
Как в Эксель (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) осуществлять одновременный поиск различных текстовых выражений, внесенных в поле для ввода текста с использованием знака-разделителя. В качестве знака-разделителя используется (;) точка с запятой;
выбирать различные диапазоны для обработки данных;
9) ограничивать выбранные диапазоны номерами строк сверху и/или снизу для избежания повреждения шапок таблиц и строк с разного рода промежуточными итогами;
10) осуществлять поиск текста в строках как с учетом регистра, так и без.
Диалоговое окно надстройки
По изображению диалогового окна можно получить представление о том, какие возможности предоставляются надстройкой — это удаление/скрытие пустых строк и строк, подходящих под заданные условия.
Как скрыть или удалить строки по условию?
На выбор пользователя макрос может удалять/скрывать пустые строки, а может на выбор пользователя скрывать либо удалять строки, удовлетворяющие заданным условиям, например таким как содержание заданного текста, либо отсутствием такового, может учитывать регистр при поиске текста в строках, а может не учитывать. Для того, чтобы при удалении/скрытии в таблицах не пострадала шапка или промежуточные результаты, введено дополнительное ограничение по номерам строк, при помощи которого можно задавать диапазон для действия макроса. Если же диапазон не задан пользователем, то макрос работает со строками так называемого используемого диапазона, то есть со строки, в которой содержится первая заполненная информацией ячейка, до строки с последней заполненной ячейкой. Пользователю также предлагается ограничить обработку данных либо активным листом, либо всеми листами активной рабочей книги.
При помощи надстройки можно производить действия не только с самими строками, которые подходят под заданное условие, но и со строками, которые находятся выше или ниже этих строк. Кроме того, предусмотрена возможность задать количество строк для каждого действия.
Как скрывать или удалять разное количество строк?
Если в диалоговом окне надстройки установить флажок в поле «Разное количество строк», то числовое значение в поле «Для каждого действия, шт.» меняется на номер столбца, в котором содержатся значения для каждого действия. В этом случае за каждое действие будет скрыто или удалено столько строк, сколько указано в соответствующей строке заданного столбца.
Удаление (скрытие) строк по условию
макрос удалит на листе все строки, в которых содержится искомый текст:
Чтобы вместо удаления просто скрыть такие строки, замените строку
Расширенная версия этого макроса — с использованием 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)
Подскажите. после удаления строк с помощью макроса, нельзя почему то вернуть назад назад изменения.Что нужно сделать чтоб вернуть изменения назад.
Здравствуйте, Нурьяна.
Моя программа нормально работает, — если ей правильно настроить
(настройка под каждый конкретный сайт, — от 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
Если значение 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.
- Выделяете таблицу, на главной вкладке панели инструментов ищете кнопку Сортировка и фильтр и из выпадающего списка выбираете нужную опцию.
- Щелкаете по стрелочке в столбце Выручка, переходите к строке Числовые фильтры и выбираете нужное условие. В нашем случае меньше.
- В новом окне вводите число, меньше которого будет применяться фильтрация.
- Выделяете полученный фрагмент таблицы, нажимаете правой клавишей мыши и выбираете Удалить строку.
- Снова нажимаете стрелочку вниз и щелкаете по опции снять фильтр.
- Таблица принимает вид без удаленных строк.
Чтобы автоматически убирать ненужные строки, можно воспользоваться специальным инструментом редактора – макросами. Эта функция требует знаний в области программирования и синтаксисе языка Visual Basic for Application (VBA), а также необходимо иметь идею для решения задачи по средствам подпрограммы. В интернете много готовых макросов, которые подходят для удаления строк в таблице. Достаточно их скачать и привязать к редактору.
Важно! Скачивайте файлы только с проверенных сайтов во избежание заражения компьютера вирусами.
Как видите, удалить строки по условию не трудно. Более продвинутые пользователи могут воспользоваться макросами, а для остальных отлично подойдет фильтрация данных по заданному критерию.
Жми «Нравится» и получай только лучшие посты в Facebook ↓