在Excel中计算有条件格式化的单元格
非常感谢您关注我的问题。
基本上我有一个仪表板,我有条件格式化 – 取决于什么值返回到该单元格将是如果单元格变成红色或保持白色/ unshaded。 我在仪表板顶部有一系列的行,需要总计每列下的红色单元的数量(所以H8将H10:H21范围内的红色单元的总和相加)。
我试图写一个VBmacros来计算单元格。 函数调用=CountRed(Range:Range)
,所以在我以前的示例单元格H8 =CountRed(H11:H21)
。
我遇到的问题是,macros不会返回正确数量的红色单元格。 (例如,当有3个时,它将返回5)。我也不知道为什么我的函数不是dynamic的; 同时使用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)。
再次感谢你的帮助!
你可能想看看countif函数。
http://office.microsoft.com/en-au/excel-help/countif-HP005209029.aspx
您可能需要将条件格式化逻辑复制到此函数的if条件中,但这应该非常简单。 发布一些关于表格和条件格式规则的更多信息,如果你想获得帮助。
尝试使用
If cell.DisplayFormat.Interior.ColorIndex = 22 Then
代替
If cell.Interior.ColorIndex = 22 Then
请注意,根据本文, DisplayFormat
属性在用户定义的函数中不起作用,如果您直接从工作表中调用它们。 但是,如果你将从macros调用它,它的工作原理:
Sub test() MsgBox CountRed(Range("C1:C12")) End Sub
CELLfunction可能是您需要的答案。
CELL(资讯types,基准)
其中一个info_type是格式。 虽然不包括所有types的格式,但涵盖的范围足够广泛,可以满足您的需求。
它可以拿起它是格式化为货币,还是有色,或者如果有括号。 它可以拾取左,右,居中,填充文本。
它不能拿起背景颜色,字体types/重量/倾斜度。