Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление/скрывание строк на основе значений двух столбцов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Удаление/скрывание строк на основе значений двух столбцов
McStivenson Дата: Понедельник, 07.09.2020, 10:34 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Добрый день.

Прошу помочь со следующей проблемой. Есть таблица с 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]
К сообщению приложен файл: 3258311.xlsm (13.8 Kb)


Сообщение отредактировал McStivenson - Понедельник, 07.09.2020, 10:47
 
Ответить
СообщениеДобрый день.

Прошу помочь со следующей проблемой. Есть таблица с 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]

Автор - McStivenson
Дата добавления - 07.09.2020 в 10:34
Pelena Дата: Понедельник, 07.09.2020, 19:51 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Вариант в файле
К сообщению приложен файл: 4709704.xlsm (20.1 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Вариант в файле

Автор - Pelena
Дата добавления - 07.09.2020 в 19:51
McStivenson Дата: Вторник, 08.09.2020, 15:23 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Pelena, да, вполне работает. Вопрос, а если добавить ещё один столбец с названиями, который по сути будет дублирующим первого столбца, какой момент надо изменить в коде, чтобы не приходилось каждый раз менять местами столбец с составляющими со столбцом с названием?


Сообщение отредактировал McStivenson - Вторник, 08.09.2020, 17:03
 
Ответить
СообщениеPelena, да, вполне работает. Вопрос, а если добавить ещё один столбец с названиями, который по сути будет дублирующим первого столбца, какой момент надо изменить в коде, чтобы не приходилось каждый раз менять местами столбец с составляющими со столбцом с названием?

Автор - McStivenson
Дата добавления - 08.09.2020 в 15:23
Pelena Дата: Вторник, 08.09.2020, 18:45 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Вот здесь
[vba]
Код
oDic(ra.Offset(, -1).Value) = ra.Value
[/vba]
меняем -1 на 1 (или другое число, на сколько столбец с ИД отстоит от столбца с составляющими),
а здесь
[vba]
Код
Intersect(ActiveSheet.UsedRange, Columns(1))
[/vba]меняем 1 на другой номер столбца с ИД


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВот здесь
[vba]
Код
oDic(ra.Offset(, -1).Value) = ra.Value
[/vba]
меняем -1 на 1 (или другое число, на сколько столбец с ИД отстоит от столбца с составляющими),
а здесь
[vba]
Код
Intersect(ActiveSheet.UsedRange, Columns(1))
[/vba]меняем 1 на другой номер столбца с ИД

Автор - Pelena
Дата добавления - 08.09.2020 в 18:45
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!