DmfkeeperВот код который надо положить в ВБА модуль
Sub povtor()
Application.ScreenUpdating = False 'убираем мерцание экрана
Dim temp() As String 'определяем динамический массив чтобы не засорять память
strih = 1 'задаем начальный код штриховки 1-сплошная
i = 1 'первоначальное значение переменной, будет использоваться для номера строки
While Cells(i, 1).Value <> "" 'цикл пока не найдем пустую ячейку складываем инфу в массив
ReDim Preserve temp(i) 'перенумерация массива с сохранением данных
temp(i) = Cells(i, 1).Value 'заносим значения в массив
With Cells(i, 1).Interior 'сбрасываем предыдущие цвета
.ColorIndex = xlNone
End With
i = i + 1
Wend
For j = 1 To UBound(temp) 'цикл поиска повторов
If temp(j) > "" Then
For k = j + 1 To UBound(temp) 'второй цикл на сравнение
If temp(k) = temp(j) Then 'если совпали значения
temp(k) = "" 'выкидываем повтор чтобы еще раз не учитывать
With Cells(k, 1).Interior
.ColorIndex = 3 + cl 'устанавливаем цвет ячейки с 3 чтобы не было черного и белого
If strih = 19 Then
MsgBox "Превышен лимит повторов. (данные содержат более 954 различных повторений)", vbCritical
Exit Sub
End If
.Pattern = strih 'задаем штриховку
End With
flag = 1 'установка флага для проверки что есть повторы
End If
Next
End If
If flag = 1 Then 'если были повторы то на исходную ячейку назначить соотв. цвет
flag = 0
With Cells(j, 1).Interior
.ColorIndex = 3 + cl
.Pattern = strih
End With
cl = cl + 1 'меняем цвет для следующего повтора
If cl = 53 Then 'боремся с ограничением на количество цветов в Excel введением штриховки
cl = 1
stih = strih + 1
End If
End If
Next
Application.ScreenUpdating = True
End Sub
Теперь коментарии:
1. Спрашиваешь про цвета их 55 стандратных для Excel, два из них черный и белые использовать нельзя (черный т.к. будет невидим шрифт, белый т.к. его оставим для ячеек без повторов), таким образом ты найдешь не более 55 различных пар, это ограничение я обошел сделав еще штриховку. Таки образом число различных пар не может превышать уже 954 думаю этого достаточно, если будет мало тогда надо менять еще аттрибуты шрифта ячейки. (Вообще цветов конечно больше их можно задать через RGB но ты не сможешь отличить на взгляд оттенки близко стоящих, так что превышать число стандартных Excel цветов нет смысла (ИМХО))
2. Программа ищет на только двойные повторения, но и любое их число (т.е. мы выловим хоть 2 хоть 100 повторов и пометим их одним цветом).
3. Программа узко предназначенна только для решения конкретно твоей задачи, т.е. поиск повторов в столбце А (если кому будет надо можно ее сделать универсальной). Выделяется цветом только ячейка (можно сделать выделение всей строки)
4. Вид данных в столбце может быть хоть текст, хоть цифра
5. Считаю что данные в столбце А распологаются непрерывно (т.е. нет в середине пустых ячеек)
(если это не так то скажи поправим код)
6. Краткое описание работы, складываем значения в ячеек в динамический массив за одним сбрасывая предыдущие цвета. Дальше осуществляем анализ массива, берем элемент и сравниваем с последующими, при совпадении идет раскраска, совпавшие элемнты выкидываются из массива. В случае превышения числа "одинаковостей" в 954 будет выдано предупреждение и макрос работать не будет (борьбу с этим как вариант я описал выше)
Ну вот вроде и все если что вспомню по существу добавлю, будут вопросы пиши
