非常感谢您查看我的问题。
基本上我有一个我有条件格式化的仪表板 - 取决于返回到该单元格的值,如果单元格变为红色或保持白色/无阴影。我在仪表板顶部有一系列行,需要总计每列下的红色单元格数(因此H8总和了H10:H21范围内的红色单元格总数)。
我试图编写VB宏来计算单元格。该函数使用=CountRed(Range:Range)
调用,因此在我之前的示例单元格H8 =CountRed(H11:H21)
。
我遇到的问题是宏不会返回红色单元格的正确数字。 (例如,当有3个时,它将返回5.)我也不知道为什么我的函数不是动态的;同时使用Application.Volatile
和Application.Volatile(True)
不会改变任何事情。
Function CountRed(MyRange As Range)
Dim iCount As Integer
Application.Volatile
iCount = 0
For Each cell In MyRange
If cell.Interior.ColorIndex = 22 Then
iCount = iCount + 1
End If
Next cell
CountRed = iCount
End Function
所有格式化的单元格都是相同的红色(22)。
再次感谢您的帮助!
答案 0 :(得分:1)
你可能想看一下countif函数。
http://office.microsoft.com/en-au/excel-help/countif-HP005209029.aspx
您可能需要将条件格式化逻辑重现为此函数的if条件,但这应该非常简单。发布有关表格和表格的更多信息。条件格式规则,如果您需要帮助。
答案 1 :(得分:0)
尝试使用
If cell.DisplayFormat.Interior.ColorIndex = 22 Then
而不是
If cell.Interior.ColorIndex = 22 Then
请注意,如果您直接从工作表中调用它们,则相应于此article DisplayFormat
属性在用户定义的函数中不起作用。但是如果你从宏中调用它,它就可以工作:
Sub test()
MsgBox CountRed(Range("C1:C12"))
End Sub
答案 2 :(得分:-1)
CELL功能可能是您需要的答案。
其中一个info_type是格式。虽然它不包括所有类型的格式,但它涵盖了足够广泛的设置,以便它可以满足您的需要。
无论是格式化货币,还是彩色,或者是否有括号,它都可以获取。它可以拾取左,右,居中,填充的文本。
它无法拾取背景颜色,字体类型/重量/倾斜。