У меня есть шесть столбцов, таких как имя, назначение, группа, роль, географическая привязка и идентификатор, и я хочу выделить дублирующиеся значения в одном и том же идентификаторе на основе значений в ячейке. Ячейка имеет несколько значений с точкой с запятой. если какие-либо значения ячеек совпадают с другими значениями ячеек, следует выделить обе строки.
Просмотр необработанных файлов Просмотр результатов
Я написал макрос для этого, но это не работает. Пожалуйста, помогите.
Sub DuplTTM()
'select first row data and compare with the table
Dim i As Long, j As Long, nextrow As Long, lastrow As Long, nwsheet As Worksheet, r As Integer,
c1 As Integer, c2 As Integer, c3 As Integer
' sorting data by ID
Columns("A:F").Sort key1:=Range("F2"), _
order1:=xlAscending, Header:=xlYes
' finding the last row
lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'random colour generation
c1 = Int(255 * Rnd) + 1
c2 = Int(255 * Rnd) + 1
c3 = Int(255 * Rnd) + 1
mycolor = RGB(c1, c2, c3)
Application.ScreenUpdating = False
j = 3
' defining next row with expected result
For i = 2 To lastrow
arrv = Split(ActiveSheet.Cells(i, 3), "; ")
arrn = Split(ActiveSheet.Cells(j, 3), "; ")
If ActiveSheet.Cells(i, 6).Value = ActiveSheet.Cells(j, 6).Value Then
For Each k In arrv
For Each l In arrn
If (Trim(k) = Trim(l)) = True Then
If ActiveSheet.Cells(i, 2).Value <> ActiveSheet.Cells(j, 2).Value Then
ActiveSheet.Cells(i, 1).Resize(1, 6).Interior.Color = mycolor
ActiveSheet.Cells(i + 1, 1).Resize(1, 6).Interior.Color = mycolor
Exit For
End If
End If
Next l
Next k
End If
j = j + 1
Next i
Application.ScreenUpdating = True
MsgBox ("Completed")
End Sub