EXCEL中用自定义函数按颜色求和

本期主要分享在 EXCEL 中用自定义函数实现按颜色求和以及按颜色条件求和。如上图所示,可以按对应颜色求和,也可以实现按对应颜色以及条件的求和。(本期教程以上图为实例)

1、插入模块:打开excel,按Alt+F11打开VBA窗口。鼠标右键单击空白处插入模块。(如下图所示)。

2、编写按颜色求和的代码:在模块1输入如下代码:

Function YS(颜色 As Range, 区域 As Range)

Dim x As Range

s = 颜色.Interior.Color

For Each x In 区域

If x.Interior.Color = s Then

n = n + x.Value

End If

Next

YS = n

End Function

2.1 输入自定义公式:在C10单元格输入刚刚的自定义公式“=YS(B10,$B$2:$J$8)”


2.2 函数解释: YS(颜色对象,求和区域) 即计算在B2:J8区域内颜色与B11单元格相同的所有数字的和。

3、按对应颜色的条件求和: 上面介绍的是在选定区域内按颜色求和,下面接着介绍按条件求和;即在选定区域内(B2:J8),颜色为E10单元格颜色且名字为E10内容(567w)所在行的数字总和。(如下图所示)

3.1 在模块中新建(SUMC)函数:在模块中输入如下代码

Function SUMC(对象 As Range, 区域 As Range, 类型 As Integer)

Dim x As Range

m = 类型

s = 对象.Interior.Color

a = 对象.Value

i = 区域.Row

j = 区域.Row + 区域.Rows.Count - 1

c = 区域.Column + 区域.Columns.Count - 1

If m = 0 Then

For k = i To j

If Cells(k, 区域.Column) = a Then

b = k

k = j

End If

Next

For Each x In Range(Cells(b, 区域.Column), Cells(b, c))

If x.Interior.Color = s Then

n = n + x.Value

End If

Next

SUMC = n

End If

If m = 1 Then

For Each x In 区域

If x.Interior.Color = s Then

n = n + x.Value

End If

Next

SUMC = n

End If

End Function

3.2 函数解释:SUM(对象,求和区域,求和类型)对象包含颜色对象和条件内容的对象(B10),求和区域为(B2:J8)。求和类型为1,0两个值。(如下图所示)

3.2.1 输入“0”则既要满足(B10)单元格的颜色和类容后再对应行求和。输入“1”则只对区域内满足颜色条件的单元格求和。(如下图所示。)

由于时间限制,本次介绍就分享到这里。如有疑问可留言讨论!