为什么会有这种需求? 我们知道Excel是个平面二维的,有时候我们展示记录多维度信息时,仅仅使用横纵坐标轴是不够的, 举例说明,我们需要了解一个商品在不同时间段的销售情况,那如果我对销售数据进行分级,看分别属于不同的档次,那么我们会发现在表格设计的时候就不大好弄了。 有人说,我们可以用备注啊,是滴,但是备注里面的信息不好参与运算,处理起来不大方便,这时候就有一种方法了,比如添加颜色背景以示区分(颜色管理在日常报表中的运用,以后会单独开一章节来讲),这样就相当于增加了第三维,丰富我们报表的承载能力. 困难点? 好了,用了颜色了,报表好看了,信息量也大了, 但是问题来了,现有的函数按条件统计,并没有加入颜色这个条件,那我要统计某些颜色的单元格时,该如何处理呢?相信很多人平时会碰到这么个问题,今天咱们就来探讨一下。 解决方案: 方法一、筛选 Excel的高版本增加了按颜色筛选这么一个功能,但是有个局限是仅能对单列进行处理。 假设我们只需要处理单列: 1.1 按颜色进行筛选 1.2 用subtotal函数进行统计 之所以用subtotal是因为subtotal函数有2个参数,第一个参数可以区分可见单元格和不可见单元格的汇总。 我们筛选后,剩下的就是有颜色的,subtotal进行计算就可以得出正确的结论,假设黄色单元格的求和,109就是相当于sum函数,加了100就是表示对可见单元格统计,如果参数为9就是统计全部 不清楚的可以下去加强了解一下这个函数,此处不做深入解释 非筛选结果 筛选后结果 方法二、查找 可以处理多列 很多人平时用查找功能可能很少注意到也能按照颜色查找 2.1 ctrl+F,调出查找对话框 找到对应的格式,点OK 2.2 查找所有 将下面查找到的全部展开后,1)选择第一个按住shift键,选择最后一个;2)ctrl+A也行。这样你就会发现所有满足条件的即有颜色的单元格都选中了 统计结果,1)可以直接查看下面的状态栏的统计数据,手动记录;2)保持查找所有的这个状态,将其区域定义名称,如abc,旁边写个函数=sum(abc)进行计算。 定义名称 方法三、宏表函数 这里要用到宏表函数get.cell。 宏表函数作为函数的一种特殊存在是特定历史背景下的产物,最初出发点为了兼容考虑的。高版本也能用,只是没那么直接。我们需要配合名称来用。 3.1 定义名称 选择B4单元格,定义名称假设为color,输入公式=GET.CELL(63,??),其中63表示获取单元格颜色参数,大家可以度娘详细了解这个函数的知识。 第二个参数注意相对引用和绝对引用。 3.2 计算出每个单元格的颜色值 在旁边空白单元格输入=color,求得单元格对应的颜色 3.3 sumif函数求和 在这个案例中,既能处理多列也能处理单列,Excel很聪明的自动识别对应的位置进行求和 方法四、UDF 以上3种办法在固定的数据里面操作比较简单直接,但是在应对经常性的重复性的或者修改比较多的情况下就显得步骤比较繁琐,不是很智能。这时候怎么能少得了强大的VBA编程呢? UDF,即user-defined-function,自定义函数。 4.1 文件另存为.xlsm格式 因为涉及到VBA代码,高版本的需要换个存储格式,否则代码无法保存,03版就不需要了,可以直接编辑 4.2 插入代码 alt+F11,打开VBE编辑器,插入模块 复制粘贴如下代码即可
此处定义了一个SumColorCells函数,其中 第一个参数表示参考颜色的单元格 第二个参数表示求和区域 4.3 返回单元格按参数设置公式即可 按照定义输入函数即可,有时候函数不会自动重算,我们可以改进一下,比如后面+now()*0等 以后想要计算有颜色的随便什么颜色的可以直接套用这个自定义函数啦,像正常内置函数一样使用。主要注意的是:
总结 几种方式优劣对比,相信总有一种方式适合你:
------------------------------------------------------------ 【喜欢就转发订阅吧,也可关注微信公众号Excel-365,新浪博客:http://blog.sina.com.cn/excel365】 |
|