Как выделить повторяющиеся значения на основе значений в одной ячейке с помощью макроса VBA? - PullRequest
0 голосов
/ 12 марта 2020

У меня есть шесть столбцов, таких как имя, назначение, группа, роль, географическая привязка и идентификатор, и я хочу выделить дублирующиеся значения в одном и том же идентификаторе на основе значений в ячейке. Ячейка имеет несколько значений с точкой с запятой. если какие-либо значения ячеек совпадают с другими значениями ячеек, следует выделить обе строки.

Просмотр необработанных файлов Просмотр результатов

Я написал макрос для этого, но это не работает. Пожалуйста, помогите.

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...