我有一些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是可以依赖的范围。
这样可行,但是如果单元格已通过条件格式设置格式化,则它不会在返回的计数中包含此内容。
现在我卡住了/ /
答案 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以节省资源。