夜雨聆风学习资料网

ARTICLE · 1119891

Excel按颜色求和/计数?两个函数,10秒搞定!(附VBA代码)

Excel按颜色求和/计数?两个函数,10秒搞定!(附VBA代码)

你有没有遇到过这个问题。

就是领导把各种各样的数据用不同的颜色来表示,在整理的时候需要进行归类汇总。一张几百行的表格里,你要靠眼睛去一一查找、手工添加标记,花费了两个小时的时间,还可能出错。

给大家介绍两种VBA自定义函数:SumColor和CountColor,在给定的颜色下计算总和和计数,还能够很快得出结果。

一、效果有多爽?先看这个

比如A列用不同颜色来表示各种销售额,那么你可以使用的函数:

=SumColor(C1, A1:A100)

C1用什么颜色填充,就会自动生成该颜色的数据;改变颜色的话,效果也会变。

=CountColor(C1,A1:A100)

按下按钮就可以计算出同一种颜色的数据有多少个,如果手动计时半小时的话,在公式面前只需要一秒钟就能够完成。

二、两段代码,直接复制

在开发工具中选择Visual Basic,在插入选项里选择模块,并把下面的代码粘贴进去就可以。

按颜色求和:

Function SumColor(i As Range, ary1 As Range) As Double

Dim icell As Range, total As Double

Dim targetColor As Long

Application.Volatile

targetColor = i.Interior.Color

For Each icell In ary1.Cells

If icell.Interior.Color = targetColor Then

If IsNumeric(icell.Value) And Not IsEmpty(icell.Value) Then

total = total + CDbl(icell.Value)

End If

End If

Next icell

SumColor = total

End Function

按颜色计数:

Function CountColor(x As Range, ary2 As Range) As Long

Dim i As Range, cnt As Long

Dim targetColor As Long

Application.Volatile

targetColor = x.Interior.Color

For Each i In ary2.Cells

If i.Interior.Color = targetColor Then cnt = cnt + 1

Next i

CountColor = cnt

End Function

粘贴完毕后退出VBA界面,此时函数就已经安装完成,和内置函数一样用。

三、三个必知要点

1.只对填充颜色进行判断,不管文字的颜色是什么样的。

2. Application.Volatile 是灵魂。 这行代码让函数变成易失函数,改数据、改颜色,结果自动刷新。

3.一定要以.xlsx格式来存储文件,普通的.xls文件在保存的时候所有的VBA宏都会被删除掉。所以要将工作簿另存为“包含宏的工作簿”。

写在最后

学会之后就不用再怕:财务用颜色来划分科目,销售用颜色来划分地区,项目用颜色来划分进度,全都秒杀。

今天晚上就把代码放到自己的Excel中去,明天的报表会感谢现在的你。

喜欢的话,可以点个关注哦。

相关学习资料