Перейти к содержанию

Господа помогите!


mutag3n

Рекомендуемые сообщения

Мне необходим макрос (или небольшая програмка на VBA) который будет удалять дубли из таблицы эксель учитывая то что каждая строка не уникальна. Причем начать удаления дублей он должен начать с конца таблицы (т.е. снизу вверх).

Прилагаю таблицу чтобы наглядно понять то что я прошу сделать. Помогите плиз а то уже замучался. Искал в нете готовые варианты - не помогли (да и я плохо разбираюсь). Нашел готовую программу но она делает поиск дублей сверху таблицы...

 

P.S. С меня пиво! :rolleyes:

______1.zip

Ссылка на комментарий
Поделиться на другие сайты

нужна именно автоматизация?

указаная задача решается последовательностью действий:

сортировка по убыванию столбца "дата"

расширенный фильтр по диапазону ячеек "id" с отмеченной галочкой "только уникальные значения"

и обратной сортировкой по столбцу "дата" по возрастанию

Ссылка на комментарий
Поделиться на другие сайты

ну я имею ввиду что там не обязательно будет дата (т.е. числовое значение которое идет в порядке возрастания и можно будет по нему отсортировать). Т.е. не стоит к этому привязываться. Видимо плохой пример с датой

Ссылка на комментарий
Поделиться на другие сайты

ну я имею ввиду что там не обязательно будет дата (т.е. числовое значение которое идет в порядке возрастания и можно будет по нему отсортировать). Т.е. не стоит к этому привязываться. Видимо плохой пример с датой

 

Дело в том, что текст в памяти компьютера тоже представляется в виде чисел и, соответственно, поддается сортировке

Ссылка на комментарий
Поделиться на другие сайты

Короче мне нужно удалить дубли в базе только по значению этого самого id. Остальные значения могут быть не уникальными.

Вот текст небольшого макроса который может справиться с этой задачей. Но он удаляет повторяющие строки если они полностью идентичны. Как мне его изменить чтобы он не проверял остальные значения, кроме одного- ID?

 

Sub DeleteDubls()

Const intCol = 10

Const intRow = 39

Dim i%

Cells(intRow, intCol).CurrentRegion.Sort Key1:=Cells(intRow, intCol), Order1:=xlAscending, Header:=xlGuess, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

For i = intRow + 1 To Cells(intRow, intCol).CurrentRegion.Rows.Count + intRow

If Cells(i, intCol) = "" Then Exit For

If Cells(i, intCol) = Cells(i, intCol).Offset(-1, 0) Then _

Rows(i).Delete shift:=xlUp: i = i - 1

Next

End Sub

Ссылка на комментарий
Поделиться на другие сайты

Короче мне нужно удалить дубли в базе только по значению этого самого id. Остальные значения могут быть не уникальными.

Вот текст небольшого макроса который может справиться с этой задачей. Но он удаляет повторяющие строки если они полностью идентичны. Как мне его изменить чтобы он не проверял остальные значения, кроме одного- ID?

Дай минут 15-20

Решим

Ссылка на комментарий
Поделиться на другие сайты

Я конечно в Екселе много лет не писал, но если я правильно понял, "intCol = 10" - количество колонок, по которым идет сравнение. Таким образом, если заменить 10 на 1, сравление пойдет по крайней левой колонке. Попробуй.

Ссылка на комментарий
Поделиться на другие сайты

intCol - номер столбца по которому идет сравнение.

intRow = 39 - номер строки с которой начинается сравнение. т.е. таким образом я заставляю макрос работать "снизу" таблицы.

Ссылка на комментарий
Поделиться на другие сайты

Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

×
×
  • Создать...