中国梦的定义和内涵:根据单元格颜色汇总数值

来源:百度文库 编辑:偶看新闻 时间:2024/05/06 21:13:12
根据单元格颜色汇总数值2010-09-02 10:32

在做数据分析时,为了醒目,经常会把不同的数值所在单元格填充上颜色,有时需要把相同颜色的单元格数据进行汇总。
比如下面图中,想要汇总“粉红色”的四个单元格数据,以及三个“绿色”单元格数据。
只有在EXCEL2007及以上版本中是有这个功能的,但很多人已经习惯了EXCEL2003及以下的版本,那么在使用EXCEL2003版本的用户想要实现这一功能,只能借助VBA做的自定义函数了。


下面就开始制作这个自定义函数。
先在EXCEL窗口中按ALT+F11组合键,调出VBA窗口,插入一个模块,把下面代码复制进去。
Function hz(a As Range, b As Range)
For Each c In a
If c.Interior.ColorIndex = b.Interior.ColorIndex Then s = s + c
Next
hz = s
End Function

这个自定义函数的用法是:hz(a,b)
它用了两个参数a与b,其中a是所有数据的区域,b是指定根据哪一个单元格的颜色为条件进行汇总计算,两个参数之间用逗号隔开。

下面就用这个自定义函数分别计算一下“粉色”与“绿色”格中的合计数。

在一个空白单元格输入公式 =hz(A2:B6,A3)
就会显示结果为115,这是A2:B6区域中所有“粉色”单元格的合计数。

再在另一个空白单元格输入公式 =hz(A2:B6,B2)
会显示结果为42,这是A2:B6区域中所有“绿色”单元格的合计数。

 

对本文的补充

有网友询问,这个自定义函数只能汇总填充底色的单元格,不能按字体的颜色汇总数据,能不能再做一个可以汇总字体颜色的自定义函数呢?

其实这个也很容易实现,在上例中,是通过IF函数来判断单元格的填充色属性“.Interior.ColorIndex  ”是否与目标单元格一致来进行汇总的,只要把这个语句变成判断单元格的字体颜色属性“.Font.ColorIndex ”就行了,代码如下:

Function hzz(a As Range, b As Range)
Application.Volatile True
For Each c In a
    If c.Font.ColorIndex = b.Font.ColorIndex Then s = s + c
Next
hzz = s
End Function
使用的时候,在一个空白单元格中输入公式=hzz(A2:B6,B6)

就会将这一区域中,字体颜色与A2单元格相同的单元格内数值汇总求和。

提示:由于自定义函数默认是不自动更新计算结果的,在使用中会引起不必要的麻烦,所以在这个代码中加了一个语句 Application.Volatile ,它的作用是当工作簿进行“重新计算”时,能自动更新公式结果。

关于这个语句的用法与解释,网上有很多,大家可以自己搜一下。