Страницы: 1
RSS
Оставить только по 5 строк с одинаковыми дата+домен
 
Доброго времени суток.

Есть exel файл отчета. Столбцы: порядковый номер, домен, заголовок, дата, ссылка на статью.
Нужно выбрать строки с одинаковыми доменами и датами и оставить не больше 5 штук. (лишнее удалить).

Как это сделать? Макросом?
Изменено: veris - 09.02.2021 17:05:41
 
Пример в Exel прикрепил.

Поясню, допустим есть по 10 строк с одинаковыми датами+доменами.
И таких 10 по 10 строк . (в качестве примера скажу так) 100 строк всего

надо, чтобы волшебным образом (фильтр, макрос или еще что-то), удалились 50 строк, и осталось  50 строк, 10 по 5 (5 строк с одинаковыми датами+доменами)

я уж не знаю как объяснить))  
Изменено: veris - 09.02.2021 17:04:33
 
Цитата
veris написал:
слева - было, справа - стало
НЕ ПОНЯЛ, там же вроде всего одна таблица.
Цитата
я уж не знаю как объяснить))  
покажите исходные данные и желаемый результат (отдельно)
Изменено: Mershik - 09.02.2021 17:06:30
Не бойтесь совершенства. Вам его не достичь.
 
должно получится так

ps в реальном файле отчета свыше 2 тыс строк, там могут быть меньше и больше 5 строк с одинаковыми дата+домен , вот что больше нужно удалить, не больше 5 строк
 
Цитата
veris написал:
надо, чтобы волшебным образом (фильтр, макрос или еще что-то), удалились 50 строк, и осталось  50 строк, 10 по 5 (5 строк с одинаковыми датами+доменами)
Цитата
veris написал:
там могут быть меньше и больше 5 строк с одинаковыми дата+домен , вот что больше нужно удалить, не больше 5 строк
Ключевое слово:
Цитата
veris написал:
волшебным образом
veris, для исполнения волшебства нужно хотя бы потереть волшебную лампу и сказать: "Хочу именно вот это". #1, #2  и #4 - что именно нужно?
Цитата
veris написал:
нужно удалить, не больше 5 строк
??? А если понадобится и нужно будет 6 или 8? Лучше расскажите, не сколько строк Вы хотите удалить, а что именно нужно сделать :)
P.S. Попробуйте использовать стандартный фильтр, тогда может и задача (или объяснение задачи) станет понятней :)
Изменено: _Igor_61 - 09.02.2021 18:41:47
 
Во вложении пример файла отчета.

У 6-и строк совпадает домен site1.ru и дата 09.02.2021 , 6-ую нужно удалить, не руками :) , автоматически
только 5 оставлять

возможно ли это сделать в Exel? Макросом?

ps
в реальном файле отчета более 2 тыс. строк, разные домены, разные даты, нужно именно искать, чтобы одинаковые были у строк домен и дата и удалять, если больше 5 таких
 
Из личного сообщения от veris :
Цитата
Что-то мне форум не дает писать    

попытаюсь еще раз объяснить

1 site1.ru Заг1 09.02.2021
2 site1.ru Заг2 09.02.2021
3 site1.ru Заг3 09.02.2021
4 site1.ru Заг4 09.02.2021
5 site1.ru Заг5 09.02.2021
6 site1.ru Заг6 09.02.2021

вот у 6 строк совпадает домен site1.ru и дата 09.02.2021 , 6-ую удалить нужно, не руками    , автоматически
Цитата
veris написал:
реальном файле отчета свыше 2 тыс строк, там могут быть меньше и больше 5 строк с одинаковыми дата+домен , вот что больше нужно удалить, не больше 5 строк
veris, все равно ничего непонятно из Ваших объяснений.  Нужно удалить строки с конкретным именем домена? Или с конкретным именем домена + одинаковая дата? Или удалить не больше пяти строк в файле с 2000 строками? Или в фале с 2000 строками удалить
Цитата
veris написал:
могут быть меньше и больше 5 строк с одинаковыми дата+домен , вот что больше нужно удалить, не больше 5 строк
Это вообще непонятно (туповат я, наверное)  :)
Изменено: _Igor_61 - 09.02.2021 22:59:56
 
Вы понимаете, что в примере 6 строк с одинаковыми домен+дата (именно оба должны совпадать)?
Нужно оставить 5 таких (!) строк, 6ую удалить, если было бы 25 таких строк. то удалить 20, оставить 5.
автоматически, не вручную

а теперь представьте, что есть еще строки с другими доменами+датами (например 10 строк с одинаковым доменом site2.ru и датой 10.10.2020), их тоже нужно по 5 оставить, остальные удалить, очередность тут неважна и какие именно строки тоже, просто оставить любые 5 строк с одинаковыми доменом+датой, остальные удалить

ну например из 2000 строк должно остаться 1500 строк например, после применения макроса или даже не знаю чего, так как мне никто не может сказать может ли Exel такое и как :)

задача: вычистить файл отчета, за одну дату с одного домена должно остаться не больше 5 записей(строк)
 
См. файл (будет создан новый лист с итоговой таблицей)
 
veris, из всего что понял
Код
Sub mrshkei()
Dim cell As Range, i As Long, lr As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
    x = Application.WorksheetFunction.CountIfs(Range("B1:B" & i), Cells(i, 2), Range("D1:D" & i), CLng(Cells(i, 4)))
    If x > 5 Then
        If cell Is Nothing Then
            Set cell = Cells(i, 2)
        Else
            Set cell = Union(cell, Cells(i, 2))
        End If
    End If
Next i
If Not cell Is Nothing Then cell.EntireRow.Delete
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
крос

доп. столбец
=COUNTIFS($B$1:B7;B7;$D$1:D7;D7)
Автовильтр по результатам >5.
Строки удалить, фильтр снять.

Расширенный фильтр с условием i1:i2
=COUNTIFS($B$1:B2;B2;$D$1:D2;D2)<6
Изменено: БМВ - 09.02.2021 22:23:10
По вопросам из тем форума, личку не читаю.
 
Цитата
veris написал:
за одну дату с одного домена должно остаться не больше 5 записей(строк)
Вот так и нужно было объяснить сразу   Добавлю и свой вариант:
Код
Sub Del_six()
    Dim r&
Application.ScreenUpdating = False
For r = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    Cells(r, 9).FormulaR1C1 = "=COUNTIFS(C[-7],RC[-7],C[-5],RC[-5])"
 If Cells(r, 9) > 5 Then
    Rows(r).Delete
 End If
Next r
Application.ScreenUpdating = True
End Sub
Изменено: _Igor_61 - 09.02.2021 22:51:00
 
Спасибо всем огромное!

Все варианты протестировал на реальном отчете. Результаты у всех идентичные! Обалдеть :)
Единственное, с макросами не понимаю как адаптировать под реальный отчет, ибо там столбцов чуть больше. Но это не проблема, лишние столбцы убрал и всё заработало. Но проще наверное и удобнее использовать вариант БМВ

но я хочу и с макросами разобраться, буду изучать :)

ps
и почему нельзя отменить выполнения макроса? :)
 
Цитата
veris написал:
и почему нельзя отменить выполнения макроса?
по тому что вариант медведя должен быть лучше  :D
По вопросам из тем форума, личку не читаю.
 
Цитата
veris  написал:
почему нельзя отменить выполнения макроса?
1.Можно файл сразу после выполнения макроса закрыть без сохранения и все вернется к исходному виду.
2.Добавить в макрос одну строчку - создать копию исходного листа и Ваши исходные данные сохранятся (или так же в макросе добавить создание копии файла).
3.См.  #14  :)
 
мой макрос (из сообщения №9) должен работать с любым количеством столбцов таблицы, так же он выгружает конечный результат на новый лист, т.е. ваши старые данные не изменяются
Изменено: New - 10.02.2021 23:39:30
 
еще меньше кода на pq
Код
let
    Source = Table.Group(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], {"Домен", "Дата"}, {"q", each Table.FirstN(_, 5)}),
    a = Table.Combine(Source[q])
in
    a
 
Цитата
New написал: мой макрос (из сообщения №9) должен работать с любым количеством столбцов
даже если нужные столбцы находятся не там как в примере? не получилось, работает только, когда подгоняю под пример

Цитата
БМВ написал: по тому что вариант медведя должен быть лучше
:D

_Igor_61,  очень непривычно когда пропадает возможность ctrl+z ctrl+y  :)

Антон,  про pq первый раз слышу.. код выглядит красиво и понятно
 
Цитата
veris написал:
очень непривычно когда пропадает возможность ctrl+z
veris, но не всё еще потеряно, см. файл   ;)  
Страницы: 1
Наверх