罗杰想知道是否存在使用单元格背景色作为“ if”条件的COUNTIF函数的方法。他有一个http://calendarcorner.net/[calendar],他希望能够计算以紫色或其他颜色突出显示的天数。

简短的答案是:COUNTIF不能用于检查背景色或任何格式。它只能测试值。如果您只需要计算一次或两次紫色单元格的数量,则可以使用Excel的“查找和替换”功能来计算出来。请按照下列步骤操作:

。选择组成您的日历的单元格。

。按Ctrl + F。 Excel将显示“查找和替换”对话框的“查找”选项卡。

。单击选项按钮(如果可用)。 Excel会展开对话框。 (请参见图1。)

。确保“查找内容”框为空。

。单击格式按钮。 Excel将显示“查找格式”对话框。

(请参见图2。)

。单击对话框底部的“从单元格选择格式”按钮。 “查找格式”对话框消失,鼠标指针变为加号,旁边带有吸管。

。单击格式与您要查找的单元格相同的单元格。 (换句话说,单击一个紫色的单元格。)鼠标指针将恢复正常。

。单击全部查找。 “查找和替换”对话框将展开,以列出与格式匹配的所有单元格,并且对话框底部有一个单元格计数。

。单击关闭以关闭“查找和替换”对话框。

当然,如果您想计数一两种以上的颜色,这些步骤可能会变得很乏味。或者,您可能需要计数,以便可以在某种类型的其他计算中使用它。在这些情况下,最好创建一个用户定义的函数来检查单元格并返回计数。这样的宏之一就是CountColorIf:

Function CountColorIf(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

为了使用该宏,您需要做的就是提供一个单元格,该单元格具有要测试的背景色和要测试的范围。例如,假设单元格A57的格式与您在日历单元格中使用的紫色背景色相同。如果日历位于单元格A1:G6中,则可以使用以下方法获取紫色单元格的计数:

=CountColorIf(A57, A1:G6)

应该注意的是,如果您更改日历中某个单元格的颜色,则需要执行一些操作来强制重新计算工作表。更改背景颜色后,Excel似乎不会自动进行重新计算。

当然,可以采用许多不同的方法来解决此问题并开发用户定义的函数,例如CountColorIf。以下是一些其他网站,这些网站可能在这方面有所帮助:

http://www.cpearson.com/excel/colors.aspx https://www.ozgrid.com/VBA/sum-count-cells-by-color.htm http://xldynamic.com/source/xld.ColourCounter.html

您还可以使用一些第三方加载项。

读者建议的此类附加组件之一是Kutools for Excel。您可以在此处找到有关附加组件的更多信息:

https://www.extendoffice.com/product/kutools-for-excel.html

最后一点-如果您正在使用显式填充颜色的单元格,则本技巧中的想法会很好用。它们不适用于使用条件格式着色的单元格。那是个完全不一样的水壶,因为条件格式并没有真正为您提供可以轻松锁定的任何功能。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11725)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。