突出显示单个范围内的重复项

Highlight Duplicates in a single Range

假设范围是连续的并且是单列。

我想突出显示上述范围的重复条目。我的 VBA 如下所示,但未按预期运行。主题是使用 OFFSET

将第一个单元格值与其底部值进行比较
Sub CompareSingleRange()
Dim rangeToUse1 As Range, rangeToUse2 As Range, cell1 As Range, cell2 As Range
' Assume Selection is contiguous
Set rangeToUse1 = Selection
Set rangeToUse2 = Selection
    For Each cell1 In rangeToUse1
        For Each cell2 In rangeToUse2
           If cell1.Value = cell2.Offset(1,0).Value Then
            cell1.Interior.ColorIndex = 38
            End If
        Next cell2
    Next cell1
End Sub

你只需要一个单循环:

Sub CompareSingleRange()
    Dim rangeToUse1 As Range, cell1 As Range
    Dim wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    ' Assume Selection is contiguous
    Set rangeToUse1 = Selection

        For Each cell1 In rangeToUse1
                If wf.CountIf(rangeToUse1, cell1) > 1 Then
                    cell1.Interior.ColorIndex = 38
                End If
        Next cell1
End Sub

您可以使用ExcelWorksheetFunctions来完成这个任务;否则,"pure" VBA 解决方案如下所示(您只需稍微修改原始 Sub 附加条件):

Sub FindDuplicates()
    Dim rangeToUse1 As Range, cell1 As Range, cell2 As Range
    Set rangeToUse1 = Selection
    For Each cell1 In rangeToUse1
        For Each cell2 In rangeToUse1
           If cell1.Value = cell2.Value And cell1.Row <> cell2.Row Then
              cell1.Interior.ColorIndex = 38
           End If
        Next cell2
    Next cell1
End Sub

希望这会有所帮助。

尝试条件格式规则。如果看起来更容易,请编码。

With Worksheets("Sheet1")
    With .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
        .FormatConditions.Delete
        .FormatConditions.AddUniqueValues
        With .FormatConditions(1)
            .Interior.Color = vbGreen
        End With
    End With
End With