Excel 如何通过VBA宏突出显示基于单个单元格中的值的重复值?
我有六列,如名称、分配、组、角色、地理位置和ID,我想根据单元格值突出显示相同ID中的重复值。该单元格有多个带分号的值。如果任何单元格值与其他单元格值匹配,则应高亮显示两行 我已经为它写了一个宏,但它不工作。 请帮忙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
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相对固定。显然我的回答没有帮助。所以我把它拿走了。希望其他人能帮助你。