【技巧1001-9】-看完,还不会按颜色求和就是你的不对了

虽然,我历来不推荐,使用颜色来个数据分组或者标识
但是实际情况,还是有很多小伙伴喜欢使用颜色来区别、分组数据
既然存在,我们就来分享一下,如何按照对方的角度如何解决按颜色求和或者计数的问题。
今天我们分享四种方法,看完这一篇,按颜色求和应该可以彻底搞定了。
方法1:定义名称技巧法
操作简述:查找颜色+定义名称
1、CTRL+F,调出查找面板,点击选项
2、使用获取单元格格式,点击-查看全部
3、按下CTRL+A,在名称框中输入:颜色
4、按下CTRL+ENTER,定义名称
5、使用SUM函数,参数使用定义的名称(颜色)
优点:简单
缺点:不能实现单元格区域更新变动

方法2:宏表函数定义名称(GET.CELL)

操作简述:
1、定义名称:ys=get.cell(63,C2),C2是实际颜色所在列
2、根据定义名称,获取颜色代码
3、使用SUMIF或者COUNTIF进行求和或者计数
缺点:需要辅助列处理,且必须保持为含有宏的问题(xlsm)
优点:实现自动更新

3、VBA定义函数法

代码:
Option Explicit
'作者:Excel办公实战'日期:2019年8月11日Function sumByCol(sum_rng As Range, color_rng As Range) Dim rng As Range, temp_sum Application.Volatile For Each rng In Intersect(sum_rng.Parent.UsedRange, sum_rng) If rng.Interior.ColorIndex = _ color_rng(1).Interior.ColorIndex Then temp_sum = temp_sum + rng.Value End If Next sumByCol = temp_sumEnd Function

4、VBA事件智能显示合计

代码粘贴在对应工作表的模块中
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count <> 1 Then Exit Sub If Target.Interior.ColorIndex <> -4142 Then Range("E1").Resize(1, 2).Clear Range("E1").Interior.ColorIndex = Target.Interior.ColorIndex Range("F1") = sumByCol(Intersect(Target.EntireRow, Target.Parent.UsedRange), Target) End IfEnd Sub

(0)

相关推荐