mutag3n Опубликовано 7 июля, 2008 Жалоба Share Опубликовано 7 июля, 2008 Мне необходим макрос (или небольшая програмка на VBA) который будет удалять дубли из таблицы эксель учитывая то что каждая строка не уникальна. Причем начать удаления дублей он должен начать с конца таблицы (т.е. снизу вверх). Прилагаю таблицу чтобы наглядно понять то что я прошу сделать. Помогите плиз а то уже замучался. Искал в нете готовые варианты - не помогли (да и я плохо разбираюсь). Нашел готовую программу но она делает поиск дублей сверху таблицы... P.S. С меня пиво! ______1.zip Ссылка на комментарий Поделиться на другие сайты More sharing options...
mutag3n Опубликовано 7 июля, 2008 Автор Жалоба Share Опубликовано 7 июля, 2008 Если говорить на примере этой таблицы - нужно удалить дубли по 2м параметрам id и имя (эти данные уникальны). Ссылка на комментарий Поделиться на другие сайты More sharing options...
mr.Faster Опубликовано 7 июля, 2008 Жалоба Share Опубликовано 7 июля, 2008 нужна именно автоматизация? указаная задача решается последовательностью действий: сортировка по убыванию столбца "дата" расширенный фильтр по диапазону ячеек "id" с отмеченной галочкой "только уникальные значения" и обратной сортировкой по столбцу "дата" по возрастанию Ссылка на комментарий Поделиться на другие сайты More sharing options...
mutag3n Опубликовано 7 июля, 2008 Автор Жалоба Share Опубликовано 7 июля, 2008 Не не вариант. Дата это просто в качестве примера. там может быть текст который никак не отсортировать. Ссылка на комментарий Поделиться на другие сайты More sharing options...
ritminform Опубликовано 7 июля, 2008 Жалоба Share Опубликовано 7 июля, 2008 там может быть текст который никак не отсортировать. Не понял? Как это "текст никак не отсортировать"? Ссылка на комментарий Поделиться на другие сайты More sharing options...
mutag3n Опубликовано 7 июля, 2008 Автор Жалоба Share Опубликовано 7 июля, 2008 ну я имею ввиду что там не обязательно будет дата (т.е. числовое значение которое идет в порядке возрастания и можно будет по нему отсортировать). Т.е. не стоит к этому привязываться. Видимо плохой пример с датой Ссылка на комментарий Поделиться на другие сайты More sharing options...
ritminform Опубликовано 7 июля, 2008 Жалоба Share Опубликовано 7 июля, 2008 Посмотри в меню "Данные\Сводная таблица". Может это тебе поможет. Ссылка на комментарий Поделиться на другие сайты More sharing options...
ritminform Опубликовано 7 июля, 2008 Жалоба Share Опубликовано 7 июля, 2008 ну я имею ввиду что там не обязательно будет дата (т.е. числовое значение которое идет в порядке возрастания и можно будет по нему отсортировать). Т.е. не стоит к этому привязываться. Видимо плохой пример с датой Дело в том, что текст в памяти компьютера тоже представляется в виде чисел и, соответственно, поддается сортировке Ссылка на комментарий Поделиться на другие сайты More sharing options...
mutag3n Опубликовано 7 июля, 2008 Автор Жалоба Share Опубликовано 7 июля, 2008 Короче мне нужно удалить дубли в базе только по значению этого самого 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 Ссылка на комментарий Поделиться на другие сайты More sharing options...
ritminform Опубликовано 7 июля, 2008 Жалоба Share Опубликовано 7 июля, 2008 Короче мне нужно удалить дубли в базе только по значению этого самого id. Остальные значения могут быть не уникальными. Вот текст небольшого макроса который может справиться с этой задачей. Но он удаляет повторяющие строки если они полностью идентичны. Как мне его изменить чтобы он не проверял остальные значения, кроме одного- ID? Дай минут 15-20 Решим Ссылка на комментарий Поделиться на другие сайты More sharing options...
ritminform Опубликовано 7 июля, 2008 Жалоба Share Опубликовано 7 июля, 2008 Я конечно в Екселе много лет не писал, но если я правильно понял, "intCol = 10" - количество колонок, по которым идет сравнение. Таким образом, если заменить 10 на 1, сравление пойдет по крайней левой колонке. Попробуй. Ссылка на комментарий Поделиться на другие сайты More sharing options...
mutag3n Опубликовано 7 июля, 2008 Автор Жалоба Share Опубликовано 7 июля, 2008 intCol - номер столбца по которому идет сравнение. intRow = 39 - номер строки с которой начинается сравнение. т.е. таким образом я заставляю макрос работать "снизу" таблицы. Ссылка на комментарий Поделиться на другие сайты More sharing options...
ritminform Опубликовано 7 июля, 2008 Жалоба Share Опубликовано 7 июля, 2008 тогда попробуй изменить строку If Cells(i, intCol) = Cells(i, intCol).Offset(-1, 0) Then _ на If Cells(i, intCol) = Cells(i-1, intCol) Then _ Ссылка на комментарий Поделиться на другие сайты More sharing options...
mutag3n Опубликовано 7 июля, 2008 Автор Жалоба Share Опубликовано 7 июля, 2008 Не получается. Просто сортирует их в порядке убывания по id Ссылка на комментарий Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Заархивировано
Эта тема находится в архиве и закрыта для дальнейших ответов.