Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何通过VBA宏突出显示基于单个单元格中的值的重复值?_Excel_Vba - Fatal编程技术网

Excel 如何通过VBA宏突出显示基于单个单元格中的值的重复值?

Excel 如何通过VBA宏突出显示基于单个单元格中的值的重复值?,excel,vba,Excel,Vba,我有六列,如名称、分配、组、角色、地理位置和ID,我想根据单元格值突出显示相同ID中的重复值。该单元格有多个带分号的值。如果任何单元格值与其他单元格值匹配,则应高亮显示两行 我已经为它写了一个宏,但它不工作。 请帮忙 Sub DuplTTM() 'select first row data and compare with the table Dim i As Long, j As Long, nextrow As Long, lastrow As Long, nw

我有六列,如名称、分配、组、角色、地理位置和ID,我想根据单元格值突出显示相同ID中的重复值。该单元格有多个带分号的值。如果任何单元格值与其他单元格值匹配,则应高亮显示两行

我已经为它写了一个宏,但它不工作。 请帮忙

    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
Sub-dupltm()
'选择第一行数据并与表进行比较
尺寸i为长,j为长,nextrow为长,lastrow为长,nwsheet为工作表,r为整数,
c1为整数,c2为整数,c3为整数
'按ID排序数据
列(“A:F”)。排序键1:=范围(“F2”)_
订单1:=xl升序,标题:=xlYes
“找到最后一排了吗
lastrow=ActiveSheet.Cells(Rows.Count,1).End(xlUp).Row
“随机颜色生成”
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
'定义具有预期结果的下一行
对于i=2到最后一行
arrv=拆分(ActiveSheet.Cells(i,3),“;”)
arrn=Split(ActiveSheet.Cells(j,3),“;”)
如果ActiveSheet.Cells(i,6).Value=ActiveSheet.Cells(j,6).Value,则
对于arrv中的每个k
对于arrn中的每个l
如果(Trim(k)=Trim(l))=真,则
如果ActiveSheet.Cells(i,2).Value为ActiveSheet.Cells(j,2).Value,则
单元格(i,1)。调整大小(1,6)。Interior.Color=mycolor
单元格(i+1,1)。调整大小(1,6)。Interior.Color=mycolor
退出
如果结束
如果结束
下一个l
下一个k
如果结束
j=j+1
接下来我
Application.ScreenUpdating=True
MsgBox(“已完成”)
端接头

欢迎来到So。。条件格式可以做到这一点。公式=Countif(“IDColumn”,“ID”)>1。。您需要将此应用于一行。然后将格式复制到其他行,或者您可以选择所有范围并立即应用它。但是保持公式中ID列和ID相对固定。显然我的回答没有帮助。所以我把它拿走了。希望其他人能帮助你。