我在网上找到了Excel VBA代码,它突出显示了excel中连续的唯一值。我的表有大约一百行,代码检查每一行的唯一值。我为了我的目的稍微调整了代码,所以代码现在只是更改了唯一值的字体颜色。代码工作得很好,但我想在代码中添加一个额外的元素,我不知道该怎么做。
你可以在我桌子的这张部分照片中看到红色的唯一数字。但是,代码设置为仅搜索从照片中的第三列到最后一列的唯一值(包含所有1的列是其自己的列)。我想要添加到代码中的是,在一行中找到唯一值并且该值的字体颜色发生更改后,我希望该行第一列中的单元格突出显示为黄色。
例如,我知道第一行中有一个唯一值,因为该行中的最后一个值是红色。现在已找到第一行中的唯一值,我希望该行中的第一个单元格突出显示为黄色。但是,在我的表的第五行中,没有唯一值,因此该行中的任何值都不是红色,因此我不想要更改该行中第一个单元格的任何内容。
有没有人对如何更改我的代码以产生所需的结果有任何想法?
提前谢谢。
当前代码:
Option Explicit
Sub ColorUniquesInEachRow()
Dim LastRow As Long
Dim LastColumn As Long
Dim RowIndex As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For RowIndex = 6 To LastRow
LastColumn = Cells(RowIndex, Columns.Count).End(xlToLeft).Column
With Range(Cells(RowIndex, 4), Cells(RowIndex, LastColumn))
.FormatConditions.AddUniqueValues
.FormatConditions(.FormatConditions.Count).SetFirstPriority
.FormatConditions(1).DupeUnique = xlUnique
With .FormatConditions(1).Font
.ColorIndex = 3
.Bold = True
End With
.FormatConditions(1).StopIfTrue = False
End With
Next
End Sub
答案 0 :(得分:3)
我会避免使用条件格式,因为它可能会很快失控
此外,通过条件格式化格式化的单元格需要一种特殊的方式来获取
所以我建议您使用以下代码:
Option Explicit
Sub ColorUniquesInEachRow()
Dim LastColumn As Long
Dim RowIndex As Long
Dim cell As Range
Dim unique As Boolean
For RowIndex = 6 To Cells(Rows.count, 1).End(xlUp).Row
LastColumn = Cells(RowIndex, Columns.count).End(xlToLeft).Column
unique = False
With Range(Cells(RowIndex, 4), Cells(RowIndex, LastColumn))
For Each cell In .SpecialCells(xlCellTypeConstants)
If WorksheetFunction.CountIf(.Cells, cell.Value) = 1 Then
With cell.Font
.ColorIndex = 3
.Bold = True
End With
unique = True
End If
Next
If unique Then Cells(RowIndex, 1).Interior.ColorIndex = 6
End With
Next
End Sub