Прошу помочь со следующей проблемой. Есть таблица с 2-я столбцами: ИД и составляющие. Значения ИД повторяются в зависимости от количества составляющих. Так вот, необходимо убрать те строки, в которых значения составляющих удовлетворяют некоторым условиям. При этом надо, чтобы вместе с ними так же были убраны строки, которые имеют такой же ИД, которые есть у строк, попадающий под условия.
В наличии имеется макрос, позволяющий убирать строки по условиям, но я не знаю, каким образом, можно сделать так, чтобы он захватывал смежные строки. Сразу скажу, макрос разрабатывался не мной, просто нашёл схожее решение.
Код макроса следующий:
[vba]
Код
Sub УдалениеСтрокПоНесколькимУсловиям() Dim ra As Range, delra As Range Application.ScreenUpdating = False ' отключаем обновление экрана
' ищем и удаляем строки, содержащие заданный текст ' (можно указать сколько угодно значений, и использовать подстановочные знаки) УдалятьСтрокиСТекстом = Array("1", "5")
' перебираем все строки в используемом диапазоне листа For Each ra In ActiveSheet.UsedRange.Rows ' перебираем все фразы в массиве For Each word In УдалятьСтрокиСТекстом ' если в очередной строке листа найден искомый текст 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 word Next
' если подходящие строки найдены, то: (оставьте одну из 2 следующих строк) If Not delra Is Nothing Then delra.EntireRow.Hidden = True ' скрываем их ' If Not delra Is Nothing Then delra.EntireRow.Delete ' удаляем их End Sub
[/vba]
Добрый день.
Прошу помочь со следующей проблемой. Есть таблица с 2-я столбцами: ИД и составляющие. Значения ИД повторяются в зависимости от количества составляющих. Так вот, необходимо убрать те строки, в которых значения составляющих удовлетворяют некоторым условиям. При этом надо, чтобы вместе с ними так же были убраны строки, которые имеют такой же ИД, которые есть у строк, попадающий под условия.
В наличии имеется макрос, позволяющий убирать строки по условиям, но я не знаю, каким образом, можно сделать так, чтобы он захватывал смежные строки. Сразу скажу, макрос разрабатывался не мной, просто нашёл схожее решение.
Код макроса следующий:
[vba]
Код
Sub УдалениеСтрокПоНесколькимУсловиям() Dim ra As Range, delra As Range Application.ScreenUpdating = False ' отключаем обновление экрана
' ищем и удаляем строки, содержащие заданный текст ' (можно указать сколько угодно значений, и использовать подстановочные знаки) УдалятьСтрокиСТекстом = Array("1", "5")
' перебираем все строки в используемом диапазоне листа For Each ra In ActiveSheet.UsedRange.Rows ' перебираем все фразы в массиве For Each word In УдалятьСтрокиСТекстом ' если в очередной строке листа найден искомый текст 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 word Next
' если подходящие строки найдены, то: (оставьте одну из 2 следующих строк) If Not delra Is Nothing Then delra.EntireRow.Hidden = True ' скрываем их ' If Not delra Is Nothing Then delra.EntireRow.Delete ' удаляем их End Sub
Pelena, да, вполне работает. Вопрос, а если добавить ещё один столбец с названиями, который по сути будет дублирующим первого столбца, какой момент надо изменить в коде, чтобы не приходилось каждый раз менять местами столбец с составляющими со столбцом с названием?
Pelena, да, вполне работает. Вопрос, а если добавить ещё один столбец с названиями, который по сути будет дублирующим первого столбца, какой момент надо изменить в коде, чтобы не приходилось каждый раз менять местами столбец с составляющими со столбцом с названием?McStivenson
Сообщение отредактировал McStivenson - Вторник, 08.09.2020, 17:03