咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

今天和大家分享2个按照颜色求和的方法,一个非常简单,用到宏语句;一个稍微复杂点。

①、正常方法:

以下为对应的源数据:


STEP 1

定义名称,为提取颜色值做准备

我们先插入两列颜色值列辅助列

公式 - 定义名称 ,在定义名称窗口中输入名称 mycolor(可以自定义),然后在下面引用来源中输入公式:

=GET.CELL(63,Sheet2!B2)&T(NOW())

公式说明:

  • Get.cell(63,单元格) 可以获取单元格填充颜色值
  • &T(NOW()) 实现表格在更新时定义名称取值也可以更新

STEP 2

获取颜色值

在C列和E列分别输入公式 =mycolor,即可获取B列和D列的单元格填充色。

STEP 3

剩下的就用sumif函数

=SUMIF(C:C,E2,B:B)

公式注释:(条件列,匹配单元格,求和列)


要点总结:

1、核心是用到Get.cell(63,单元格),这个比较少用到的函数,稍微解释一下用法:

GET.CELL函数的语法为:GET.CELL(Type_num, Reference)

GET.CELL函数有两个参数:

第一个参数Type_num:用数字表示的单元格信息的类型,范围是1-66。

第二个参数Reference:单元格区域。

综上:63获取单元格填充背景色。

2、定义名称的使用

3、&T(NOW())配合使用,实时更新表格信息

4、巧妙使用sumif函数,辅助颜色列提取颜色值,进行求和。

②、宏语句,非常简答,对比下就知道了。

代码如下:

Function Dlookup(arr, A, R1, R2) Dim arr1 Dim m arr1 = arr For x = 1 To UBound(arr1) If Application.CountIf(Sheets(arr1(x)).Columns(R1), A) > 0 Then Dlookup = Sheets(arr1(x)).Cells(Application.Match(A, Sheets(arr1(x)).Columns(R1), 0), R2) End If Next x End Function Function CSum(Rg1 As Range, Rg2 As Range) Dim rg_ID As Range, rg_sum As Long For Each rg_ID In Rg1 If rg_ID.Interior.ColorIndex = Rg2.Interior.ColorIndex Then rg_sum = rg_sum + IIf(IsNumeric(rg_ID.Value), rg_ID.Value, 0) End If Next CSum = rg_sum End Function

STEP1:按下ALT+F11——启动宏——右键——新建模块——复制代码到窗口内


STEP2:输入公式:

=CSum(B$2:B$10,E3)

公式解析:求和区域,颜色单元格

注意事项:如果数据未更新,双击函数单元格,然后全部下拉数据。

STEP3:最后记得将文件另存为xlsm格式。



生成的文件会带感叹号,切记!!


【小陈说】

1、对比一下,带宏的方法非常简单,小伙伴可以直接拿去使用;

2、切记保存为带宏的EXCEL;

3、如遇到数据未更新,切记重新双击下拉函数。