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

假设范围是连续的&是一个单独的列。

我想突出显示上述范围的重复条目。 我的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 

您可以使用Excel Worksheet Functions来完成此任务; 否则,“纯”VBA解决scheme如下所示(你只需要稍微修改你的原始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 

cf_duplicates

你只需要一个循环

 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 

在这里输入图像说明