使用VBA在Excel中使用相同的内部颜色计数单元格

时间:2015-02-10 20:08:18

标签: excel vba excel-vba conditional-formatting

我正在尝试计算重复的单元格。在一列中,我首先使用条件格式找到重复项。我突出显示我的细胞黄色(RGB(255,255,255))。但是,当我尝试计算突出显示的单元格时,由于某种原因,我的vba没有检测到它们。

如果我突出显示条件格式的单元格,我的功能会检测颜色并正确计数。关于为什么我无法检测条件格式的任何想法?

Function colorCount(arr As Variant, r As Integer, G As Integer, B As Integer) As Integer
Dim x As Variant
Dim xRow As Integer
Dim xCol As Integer

colorCount = 0
For Each x In arr.Cells

xRow = x.Row
xCol = x.Column

If Cells(xRow, xCol).Interior.Color = RGB(r, G, B) Then
colorCount = colorCount + 1
End If
Next

End Function

谢谢。

1 个答案:

答案 0 :(得分:0)

事实证明条件格式化实际上并没有像“传统”格式那样为单元格着色。

有两种方法可以解决这个问题:

  1. 使用VBA检测重复项:

    ' dupe check requires cells to be highighted
    YourWB.Sheets(1).Range("A" & Rows.Count).End(xlUp).Select
    
    ' now check that row for dupes, and flag each dupe with some formatting
    Dim d As Object, e
    Set d = CreateObject("scripting.dictionary")
    For Each e In Intersect(Columns(ActiveCell.Column), ActiveSheet.UsedRange)
        If e.Value <> vbNullString Then
            If Not d.exists(e.Value) Then d(e.Value) = 1 Else _
                e.Font.ColorIndex = 4
        End If
    Next
    
  2. 检测应用的条件颜色。

  3. 这有点复杂,我使用代码on this page