Добрый день!
Пользовательская функция Color_dublicates - прописывает "дубликат" в случае совпадения исполнителя, АП и суммы в контрольном столбце "проверка".
Option Explicit
Public Function Color_dublicates(ispolnitel As String, ap As String, summa As String) As String ' макрос для кодирования дублирующих записей
Application.ScreenUpdating = False
Dim total_rows, total_cols As Integer
Dim curr_row As Integer
Dim data_range As Range ' объявляем переменную диапазона календаря как range
Dim rCell As Range ' объявляем текущую переменную ячейки
Dim check_string, ispolnitel1, ap1, summa1, check_string1 As String
With ActiveSheet ' активный лист
.Cells(1, 1).Select ' левый верхний угол
check_string = ispolnitel & ap & summa
Debug.Print "check_string = "; check_string
curr_row = ActiveCell.Row
.Range(Selection, Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count)).Select 'выбираем диапазон с данными на листе
total_rows = .UsedRange.Rows.Count ' число строк в диапазоне
total_cols = .UsedRange.Columns.Count ' число столбцов в диапазоне
Set data_range = .Range(Cells(2, 5), Cells(total_rows, 5)) 'устанавливаем диапазон
For Each rCell In data_range.Cells ' для каждой ячейки диапазона
If rCell.Row = curr_row Then
GoTo next_cell
Else
End If
ispolnitel1 = .Cells(rCell.Row, 3).Text
ap1 = .Cells(rCell.Row, 4).Text
summa1 = Format(.Cells(rCell.Row, 8).Value, "###.00")
check_string1 = ispolnitel1 & ap1 & summa1
If check_string Like check_string1 Then ' если ячейка столбца D не пустая
Color_dublicates = "дубликат"
Else 'иначе - пробел
Color_dublicates = " - "
End If 'конец условия
next_cell:
Next rCell 'следующая ячейка диапазона
End With
End Function
Подробности в: