之前写过一篇关于按照单元格颜色进行求和或者计数的两种方法(点击下方链接查看)。


Excel按单元格颜色进行求和或计数



文章中的方法可以解决所有单元格手动填充颜色的求和计数问题,为什么这里说手动填充颜色呢?因为通过条件格式实现的颜色没有办法进行计算。即使利用代码Interior. Colorindex进行颜色判断。


这是为什么呢?我们来看一下Interior,内部的意思。通俗点解释,通过手动填充颜色是填充到单元格的内部。



但是利用条件格式体现的颜色就不一样了,有兴趣的可以测试一下,当你将某一个单元格手动填充为红色(任何色都可以)后,再利用条件格式填充为黄色,单元格的Interior. Colorindex依旧是红色。


这就要说到DisplayFormat,显示格式。意思就是黄色是直观显示的颜色,实际内部颜色依旧是红色。


所以Interior.Colorindex需要修改为DisplayFormat.Interior.Colorindex。我们来看看官方的说法。


Range.DisplayFormat返回一 个 DisplayFormat 对象,该对象代表指定范围的显示设置。此为只读属性。


DisplayFormat 属性在UDF 定义的用户 (中)。例如,在返回单元格内部颜色的工作表函数上,使用类似于的行Range(n).DisplayFormat.Interior.ColorIndex。当工作表函数执行时,它将返回#VALUE!。意思是DisplayFormat不可以应用在自定义函数中。


那么只能通过代码来实现条件格式下的颜色计算(非自定义函数)。执行效果如下图:



原理仍然是通过循环判断Range(n).DisplayFormat.Interior.ColorIndex是否与当前的单元格Interior. Colorindex一致进行计算。有需求的朋友可以留言。