Excel:如何根据范围内具有相同值的其他单元格的颜色为单元格着色?

时间:2017-10-11 09:20:38

标签: excel vba excel-vba validation conditional-formatting

我有一个10行到3列的范围/表。

任何特定单元格都可以从使用数据验证创建的列表中获得任何特定值。此范围内的所有单元格都具有相同的数据验证列表。

如果值在任何行或任何列上重复,而不是对角或其他,则使用条件格式突出显示这些值。

现在我希望如果在非重复的行或列中的其他位置存在相同的值,那么这些单元格也应该着色。 (最好使用与条件格式不同的颜色来了解两者之间的差异。)

目的是了解哪些值重复以及如何使用这些值的范围,以及这些值的使用范围,但不会按照标准重复。

P.s。:请告知是否需要其他信息或澄清。

请参阅附图以更好地理解我的查询。 蓝色的颜色通过条件格式化着色,绿色的颜色需要通过您的帮助进行着色。

Image for understanding

1 个答案:

答案 0 :(得分:1)

您可以使用条件格式 - >整个范围的重复值,在条件格式 - >管理规则中使用不同的颜色和设置顺序。在我看来,不需要VBA。

编辑: 好的,我想我知道你要的是什么。试试这个小子程序:

Sub PaintDuplis()
Dim rng As Range
Dim col As Range
Dim row As Range
Dim cl As Range, cl2 As Range

Set rng = Range("B4:D11") 'or whatever your range is.
'Columns
For Each col In rng.Columns
  For Each cl In col.Cells
    If WorksheetFunction.CountIf(col, cl.Value) > 1 Then cl.Interior.Color =    vbYellow
  Next cl
Next col

'Rows
For Each row In rng.rows
  For Each cl In row.Cells
    If WorksheetFunction.CountIf(row, cl.Value) > 1 Then cl.Interior.Color = vbYellow
  Next cl
Next row

'Paint whole range
For Each cl In rng
  If cl.Interior.Color = vbYellow Then
    For Each cl2 In rng
        If cl2.Value = cl.Value And cl2.Interior.Color <> vbYellow Then cl2.Interior.Color = vbRed
    Next cl2
  End If
Next cl

我放弃了条件格式化,而是使用VBA在列/行中绘制重复项,然后将所有静止的白色单元格涂成红色(如果它等于已经是黄色的单元格)。希望它有所帮助。