做财务工作的朋友,可能需要手工去核查、判断一些数据;或者在开会时,大家在讨论某些项目的处理方案,也许你就会用颜色去标记某些单元格。做完标记后,就想对刚才用颜色标记的单元格进行一些统计,例如:计数、求和等,这时候可以怎么办呢?
来自:数据化管理,作者:
定义名称法
我们知道要对数据进行统计,那你就必须要先找到需要统计的这些单元格。假设你是用肉眼看的,例如你要统计红色,那么你求和时就可以这样写:
= SUM(D2, D4, D9)
但如果几十个这样的单元格,手工操作就超麻烦了!
这时我们可以用查找格式的办法,找到所有要统计的单元格,给它们定义一个名称,然后在写公式时,我们使用名称作为函数的参数即可!
查找指定格式的单元格
Excel中的查找和替换
功能中,我们可以查找指定格式的单元格,所以我们直接依据下图指引操作即可
然后在查找结果的区域,用鼠标单击任意一个结果,再按Ctrl + A
,就可以全部选中结果了。但是要注意的是,上图中的F5
并不是我们要统计的对象,所以要按着Ctrl
不放,单击一下它切换成非选中状态即可,类似下方的效果:
选中这些结果的同时,大家可以留意下在工作表中,相应的单元格也已处于被选中状态:
这时我们就在上图左上角的名称框
中输入文字红色
(名字由你定义),然后记得还要按下回车键,这样就能把这些选中的单元格都用同一个名称红色
代替了!
我们以同样的方式,去把黄色
、绿色
也定义好即可,定义好后,如果你还不放心,可以打开名称管理器
(公式 → 名称管理器),确认一下名称是否已定义成功?如果像下图这样的,表示已定义好了:
最后的步骤就超级简单了,我们就可以直接在公式中引用名称了:
搞定!定义好名称,在公式中引用就超方便了,对于一些临时的按颜色统计需求,可以采用此法。
VBA法
如果你经常要这么做,当然就建议你在个人宏工作簿中定义一个函数,这样每个工作簿文件都可以使用了,也很方便!不会写 VBA 没关系,因为我都帮你写好了,只要你会用别人写好的VBA代码,就已经能超过公司里的同事了~
Public Function CaculateByCellColor(target As Range, whatColor As Range, _
Optional method As String = "sum") As Variant
Dim rng As Range, fillColor As Long, resCount As Long, resSum As Double
fillColor = whatColor.Interior.Color
Select Case method
Case "count"
For Each rng In target
If rng.Interior.Color = fillColor Then
resCount = resCount + 1
End If
Next rng
CaculateByCellColor = resCount
Case "sum"
For Each rng In target
If rng.Interior.Color = fillColor Then
resSum = resSum + CDbl(rng.Value)
End If
Next rng
CaculateByCellColor = resSum
Case Else
CaculateByCellColor = "暂不支持的统计方式"
End Select
End Function
以上代码复制粘贴到VBA的模块中即可,可放在个人宏工作簿或者具体的一个工作簿中,然后你就可以在在工作表中像使用普通函数一样去使用这个自定义函数CaculateByCellColor
,如下图所示:
得到的结果当然也是正确的,就不再赘述了。
CaculateByCellColor
的第一个参数,就是要统计的单元格区域;第二个参数就是填充颜色示例的单元格;第三个是可选参数,默认是sum
,表示统计的方法,如果你懂一些VBA代码,你可以在上面的函数基础上继续扩展,让它支持更多的统计方式,如中位数,平均值等。
最后
要实现按颜色统计,其实还有几种办法的,例如表格 + 筛选 + 汇总,LAMBDA + GET.CELL 函数,Office 脚本等,不过我觉得用起来并不太方便。所以文中就主要给大家介绍了两种我认最方便的方法供大家参考使用,希望对大家有帮助
本文为专栏文章,来自:数据化管理,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/117096.html 。