Парная подсветка дубликатов
Среди стандартных средств Microsoft Excel есть много разных способов выделить дубликаты цветом. Самый простой и быстрый - с помощью условного форматирования. Для этого достаточно выделить диапазон ячеек и выбрать на вкладке Главная - Условное форматирование - Правила выделения ячеек - Повторяющиеся значения (Home - Conditional Formatting - Highlight Cells Rules - Duplicate Values):
Однако в этом случае цвет заливки у всех ячеек будет одинаковым, т.е. он просто сигнализирует о том, что у элемента где-то еще в диапазоне есть повторы, но никак не помогает их найти. Исправить ситуацию можно с помощью небольшого макроса, который будет заливать каждую пару (или больше) повторяющихся дубликатов своим цветом:
Так гораздо нагляднее, правда? Конечно, при большом количестве повторяющихся ячеек оттенки различить будет трудно, но при относительно небольшом количестве дубликатов этот способ сработает отлично.
Чтобы использовать этот макрос нажмите сочетание клавиш Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer), вставьте новый пустой модуль через меню Insert - Module и скопируйте туда код этого макроса:
Sub DuplicatesColoring() Dim Dupes() 'объявляем массив для хранения дубликатов ReDim Dupes(1 To Selection.Cells.Count, 1 To 2) Selection.Interior.ColorIndex = -4142 'убираем заливку если была i = 3 For Each cell In Selection If WorksheetFunction.CountIf(Selection, cell.Value) > 1 Then For k = LBound(Dupes) To UBound(Dupes) 'если ячейка уже есть в массиве дубликатов - заливаем If Dupes(k, 1) = cell Then cell.Interior.ColorIndex = Dupes(k, 2) Next k 'если ячейка содержит дубликат, но еще не в массиве - добавляем ее в массив и заливаем If cell.Interior.ColorIndex = -4142 Then cell.Interior.ColorIndex = i Dupes(i, 1) = cell.Value Dupes(i, 2) = i i = i + 1 End If End If Next cell End Sub
Теперь можно выделить любой диапазон с данными на листе и запустить наш макрос с помощью сочетания клавиш Alt+F8 или через кнопку Макросы (Macros) на вкладке Разработчик (Developer).
Ссылки по теме
- Выделение дубликатов цветом
- Что такое макросы, куда вставлять код макроса на Visual Basic, как их запускать
- Как подсчитать количество уникальных значений в заданном диапазоне ячеек
Ну или дорабатывать макрос самому.
В любом случае, буду рад вашему варианту тут в комментариях
Хотя на словаре должно, по идее, заметно быстрее работать на больших массивах, конечно
Из справки нарыл
Только мой макрос не зависнет при выделении всего листа (или, хотя бы, столбца) целиком,
и не вылетает с ошибкой, если найдено более 55 дубликатов
Самое главное знать, что есть такая возможность в экселе, а втрое знать где лежит такая ценная информация!
Павел, огромное Вам спасибо !
смена цвета должна происходить либо шагово (меняет код RGB на определенное число), либо в зависимости от количества. Например так:
Хотелось бы получить таблицу вида:
Заранее спасибо
И защита от макросов должна быть выключена, иначе даже работающий сохраненный в книге макрос будет заблокирован (Файл - Параметры - Центр Управления безопасностью).
Подскажите пож-та
когда копирую и вставляю код макроса то
вместо Dim Dupes() 'объявляем массив для хранения дубликатов - получается Dim Dupes() '????????? ?????? ??? ???????? ??????????
Почему так происходит?
Спасибо.
Возможно, что у вас Office изначально не английский и не русский, например французский или немецкий?
У меня та же проблема, что и у Михаила Никидимова. Я копировала макрос из вашего сайта и вставила в excel, но во-первых вместо русских слов стоят вопросы, во=вторых макрос так и не сработал. Excel у меня, если не ошибаюсь, стоит русский (все на русском, но не уверена что изначальная установка была на русском). Подскажите, Никоолай, что сделать, что бы заработало?
может кто-нибудь подсказать, как ее исправить?
сразу не сообразил...
Не работает макрос. У меня "не работает" даже ваш пример.
P.S. установлен Office 2013
При таком количестве повторов, мне кажется, нужен другой подход.
Подскажите, пожалуйста, как изменить Ваш макрос, чтобы он мог выделять повторяющиеся строки, состоящие из несколько столбцов, разными цветами?
На сайте нашел также Вашу статью "Выделение дубликатов цветом" (
Подскажите, пожалуйста, а если нужно в списке, где, например есть 3 дубля, первый попавший оставить некрашеным, а другие покрасить, как изменить макрос?
[URL]
[/URL]
Подскажите, для не профи в VBA, как и что в макросе Николая нужно поменять, чтоб можно было:
- залить ячейки повторяющиеся более 4-х (5, 6, 7...) раз (готов каждый раз заходить в макрос и менять "переменную" вручную);
- чтоб все-таки макрос не "вылетал" при большом объеме повторений (от 500+);
- цвета заливки сделать "по мягче" (т.к. после обработки предполагается распечатка данных на ч/б принтере).
пример:
180582233211021107134188
180582233211021107134110
Очень нужна помощь.
Есть 3 столбца с названиями клиентов. Все клиенты повторяются, но сортировка разная.
Как сделать так, что бы если я встал в ячейку Иванов в столбце 3, подсветились все ячейки Иванов в столбцах 1 и 2?