COUNTIF细胞颜色为XXX&条件格式

时间:2015-04-02 11:32:03

标签: excel excel-vba vba

我有一些VB允许我根据单元格颜色进行COUNTIF;

Function COUNTIFCOLOR(rSample As Range, rArea As Range) As Long
Dim rAreaCell As Range
Dim lMatchColor As Long
Dim lCounter As Long

lMatchColor = rSample.Interior.Color
For Each rAreaCell In rArea
    If rAreaCell.Interior.Color = lMatchColor Then
        lCounter = lCounter + 1
    End If
Next rAreaCell
CountColorIf = lCounter
End Function

要使用此功能,您只需说

即可
=COUNTIFCOLOR(A5,J2:J15)

A5也是一个引用这种颜色的单元格,J2:J15是可以依赖的范围。

这样可行,但是如果单元格已通过条件格式设置格式化,则它不会在返回的计数中包含此内容。

现在我卡住了/ /

1 个答案:

答案 0 :(得分:0)

有一个属性,可以读取条件格式的颜色。 不幸的是,它不能用于UDF,只能用于子系统。 解决方法: 创建一个事件过程,侦听包含以下命令的工作表更改: Target.interior.color = Target.DisplayFormat.interior.color。这会将条件内部颜色复制到内部颜色。

将命令Application.volatile添加到现有函数的开头,以便在工作表重新计算时执行该命令。

这是必需的事件程序:

Private Sub Worksheet_Change(ByVal Target As Range)
    Target.Interior.Color = Target.DisplayFormat.Interior.Color
    Application.Calculate
End Sub

需要Applicaiton.calculate,因为您的功能在彩色复印后的下一个计算周期中生效。 您可能希望将有效目标范围限制为所需的arrea以节省资源。