Страницы: 1
RSS
Удаление строк, только между одинаковыми ячейками
 
Добрый день!

Подскажите пожалуйста, есть ли быстрый способ удаления строк (помечены на листе красным), расположенных только между одинаковыми ячейками (помечены на листе зеленым цветом)!?
Дело в том что приходиться работать с большим объемом данных, более 50 тысяч строк. Удаление строк вручную занимает очень много времени.

Спасибо.

п.с. оригинал документа бесцветный, фильтр не поможет!
 
Добрый день! Установите фильтр, отфильтруйте по цвету и удалите
 
Цвет я нанес самостоятельно для того что бы объяснить суть вопроса, оригинал документа бесцветный. Фильтр тут не поможет!
 
Цитата
Антон Синица: оригинал документа бесцветный, фильтр не поможет!
поможет, если ставить фильтр по значению "пусто". Скопируйте на новый лист, создайте умную таблицу и фильтруйте
Скрины


Ещё вариант без копирования данных: выделите любой из первых четырёх столбцов — F5 — Выделить — Пустые ячейки — Удалить строки с листа
Скрин
Изменено: Jack Famous - 02.07.2020 12:36:44
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Так?
 
Да, данный макрос выручит меня!
Сам в макросах не разбираюсь (знаю только как их смотреть), но в данном случае придется разобраться)))

Спасибо большое!

Цитата
Jack Famous написал: может, если ставить фильтр по значению "пусто". Скопируйте на новый лист, создайте ум
Мне не нужно было удалять все пустые ячейки, спасибо!
 
Цитата
msi2102 написал:
Так?
Недавно столкнулся с примером файла в котором данный макрос работает не корректно, пробовал сам подкорректировать не выходит! Прошу автора творения помочь, если не сложно)) Спасибо заранее.

Пример во вложении.
 
Антон Синица, что именно не так?
Изменено: msi2102 - 10.07.2020 11:59:14
 
Код
Sub Макрос2()
'
' Макрос2 Макрос
'
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
aaa = Range("A1:B" & LastRow)

a1 = aaa(UBound(aaa), 1)
a2 = aaa(UBound(aaa), 2)
a3 = a1 & "|" & a2
b = UBound(aaa)

For n = UBound(aaa) - 1 To LBound(aaa) Step -1
    If aaa(n, 1) <> "" Then
        If aaa(n, 1) & "|" & aaa(n, 2) <> a3 Then
            a1 = aaa(n, 1)
            a2 = aaa(n, 2)
            a3 = a1 & "|" & a2
        Else
            Rows(n + 1 & ":" & b - 1).Delete Shift:=xlUp
        End If
        b = n
    End If
Next

End Sub
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев, спасибо  :D
Антон надеюсь, заменить сами сможете  
Изменено: msi2102 - 10.07.2020 12:22:32
 
Цитата
msi2102 написал: что именно не так?
Макрос удаляет все строки ссылаясь на значение 1 в колонке B, при этом удаляются строки которые необходимо оставить. (Удалению подлежат только строки выделенные красным цветом)

Михаил Лебедев, Ваш способ помог, все работает, спасибо большое!
 
Цитата
msi2102 написал: надеюсь, заменить сами сможете
Цитата
Антон Синица написал:...в данном случае придется разобраться)))
придется, придется :)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
msi2102 написал:
что именно не так?
по двум столбцам должно быть совпадение. с Вашего позволения, - подправил макрос.
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Антон Синица, в сообщении №9 Михаил Лебедев, Вам поправил этот макрос, замените существующий на этот и скажите, так или нет
Изменено: msi2102 - 10.07.2020 12:28:23
 
Цитата
msi2102 написал:
Антон надеюсь, заменить сами сможете  
Уже заменил и работаю) спасибо всем :D  
Страницы: 1
Наверх