在Excel中计算有条件格式化的单元格

非常感谢您关注我的问题。

基本上我有一个仪表板,我有条件格式化 – 取决于什么值返回到该单元格将是如果单元格变成红色或保持白色/ unshaded。 我在仪表板顶部有一系列的行,需要总计每列下的红色单元的数量(所以H8将H10:H21范围内的红色单元的总和相加)。

我试图写一个VBmacros来计算单元格。 函数调用=CountRed(Range:Range) ,所以在我以前的示例单元格H8 =CountRed(H11:H21)

我遇到的问题是,macros不会返回正确数量的红色单元格。 (例如,当有3个时,它将返回5)。我也不知道为什么我的函数不是dynamic的; 同时使用Application.VolatileApplication.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/重量/倾斜度。