2013-03-02 73 views
3

如何使用不同颜色突出显示excel 2010中的多个单元格跨多个列。 我发现这个代码,但它适用于一列。excel 2010 vba使用不同颜色突出显示不同颜色的单元格横跨多个列的不同重复值

Sub Highlight_Duplicate_Entry() 
     Dim cel As Variant 
     Dim myrng As Range 
     Dim clr As Long 

     Set myrng = Range("A2:A" & Range("A65536").End(xlUp).Row) 
     myrng.Interior.ColorIndex = xlNone 
     clr = 3 

     For Each cel In myrng 
      If Application.WorksheetFunction.CountIf(myrng, cel) > 1 Then 
       If WorksheetFunction.CountIf(Range("A2:A" & cel.Row), cel) = 1 Then 
       cel.Interior.ColorIndex = clr 
       clr = clr + 1 
       Else 
       cel.Interior.ColorIndex = myrng.Cells(WorksheetFunction.Match(cel.Value, myrng, False), 1).Interior.ColorIndex 
       End If 
      End If 
     Next 
    End Sub 
+0

请在Excel中使用条件格式 – 2013-03-02 18:18:22

+0

条件格式将突出显示具有相同颜色的所有重复项。 OP希望以不同颜色突出显示每组副本。 – 2013-06-25 13:25:40

回答

4

您需要更改范围覆盖多个列,这会导致您的Match功能失效。将其替换为Find。下面的子文件将找到指定范围内的任何重复项,并用不同的颜色突出显示它们。

改为如下代码:

Sub Highlight_Duplicate_Entry() 
    Dim ws As Worksheet 
    Dim cell As Range 
    Dim myrng As Range 
    Dim clr As Long 
    Dim lastCell As Range 

    Set ws = ThisWorkbook.Sheets("Sheet1") 
    Set myrng = ws.Range("A2:d" & Range("A" & ws.Rows.Count).End(xlUp).Row) 
    With myrng 
     Set lastCell = .Cells(.Cells.Count) 
    End With 
    myrng.Interior.ColorIndex = xlNone 
    clr = 3 

    For Each cell In myrng 
     If Application.WorksheetFunction.CountIf(myrng, cell) > 1 Then 
      ' addresses will match for first instance of value in range 
      If myrng.Find(what:=cell, lookat:=xlWhole, MatchCase:=False, after:=lastCell).Address = cell.Address Then 
       ' set the color for this value (will be used throughout the range) 
       cell.Interior.ColorIndex = clr 
       clr = clr + 1 
      Else 
       ' if not the first instance, set color to match the first instance 
       cell.Interior.ColorIndex = myrng.Find(what:=cell, lookat:=xlWhole, MatchCase:=False, after:=lastCell).Interior.ColorIndex 
      End If 
     End If 
    Next 
End Sub 

添加基于注释的结果的屏幕截图如下,以帮助阐明如何工作的。每组副本都以单独的颜色突出显示。不重复的值不是彩色的: enter image description here

+0

嗨,非常感谢您的帮助,但代码可以解决一些未突出显示的数字。你能否提供更多帮助来解决我的问题? – 2013-03-03 11:40:07

+0

非常感谢您,但对于同一行中的重复数字,代码没有得到。我的数据范围(只有数字输入)在列中有唯一的数字,但不在行中。 – 2013-03-03 21:59:48

+0

立即尝试。它现在应该适用于所有您需要的情况。 – 2013-03-03 22:52:46