
昨天在解决一位学员的问题时碰到的一个问题:
Excel中如何统计每一行数据中有颜色的单元格个数?这个问题很简单,用代码直接循环每一行的单元格,统计有填充颜色的单元格个数即可。
比如:

Function countcolor(rng As Range)
Dim rg As Range, n%
For Each rg In rng
If rg.Interior.ColorIndex <> xlNone Then
n = n + 1
End If
Next
countcolor = n
End Function
后来这位同学反馈他表中的颜色是通过条件格式填充的,于是这个函数就不管用了。

Function countcolor1(rng As Range)
Dim rg As Range, n%
For Each rg In rng
If rg.DisplayFormat.Interior.Color <> RGB(255, 255, 255) Then
n = n + 1
End If
Next
countcolor1 = n
End Function
结果总显示错误值:
到底是为什么?
于是改为Sub过程试试:Sub countcolor2()
Dim rng As Range, rg As Range, n%
For Each rng In Selection
For Each rg In Cells(rng.Row, 2).Resize(1, 7)
If rg.DisplayFormat.Interior.Color <> RGB(255, 255, 255) Then n = n + 1
Next
rng = n
n = 0
Next
End Sub
发现成功了:
)