Excel中怎么统计用条件格式标识的有颜色的单元格个数?

中关村国际人才会客厅 | 拓荒牛·5小时前

昨天在解决一位学员的问题时碰到的一个问题:

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

后来这位同学反馈他表中的颜色是通过条件格式填充的,于是这个函数就不管用了。

怎么办呢?普通填充颜色可以通过:Range().Interior.Color获取其颜色条件格式填充的颜色要通过:Range().DisplayFormat.Interior.Color获取其颜色。所以改改代码试试:

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

发现成功了:

后来通过查资料才知道:因为在自定义函数中无法访问DisplayFormat属性。DisplayFormat属性只能在宏的上下文中使用。
(职场责编:拓荒牛 )