突出显示单个范围内的重复项
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
您可以使用ExcelWorksheet
Functions
来完成这个任务;否则,"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
假设范围是连续的并且是单列。
我想突出显示上述范围的重复条目。我的 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
您可以使用ExcelWorksheet
Functions
来完成这个任务;否则,"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